2014-11-03 2 views
1

Извините за очень плохой английский. Привет. Как я могу получить URL из этого списка?Python: поиск в dict встроен в список

[{u'highlighted': [], u'image_permalink': u'http://bluebeetlezar.tumblr.com/image/101630187766', u'reblog_key': u'RWjDEE41', u'format': u'html', u'timestamp': 1414973540, u'note_count': 0, u'tags': [u'train', u'railway', u'station', u'silent', u'morning'], u'photos': [{u'caption': u'', u'original_size': {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg', u'width': 640, u'height': 640}, u'alt_sizes': [{u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg', u'width': 640, u'height': 640}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_500.jpg', u'width': 500, u'height': 500}, {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_400.jpg', u'width': 400, u'height': 400}, {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_250.jpg', u'width': 250, u'height': 250}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_100.jpg', u'width': 100, u'height': 100}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_75sq.jpg', u'width': 75, u'height': 75}]}], u'id': 101630187766, u'post_url': u'http://bluebeetlezar.tumblr.com/post/101630187766/stasiun-gondangdia-in-the-morniiiiinnngg', u'caption': u'<p>Stasiun Gondangdia in the morniiiiinnngg :) #railway #station #train #morning #silent</p>', u'state': u'published', u'short_url': u'http://tmblr.co/Z2EiHt1UfePZs', u'date': u'2014-11-03 00:12:20 GMT', u'link_url': u'http://instagram.com/p/u6sFevMNJ2/', u'type': u'photo', u'slug': u'stasiun-gondangdia-in-the-morniiiiinnngg', u'blog_name': u'bluebeetlezar'}] 

Я хочу использовать .get, но это данные - список. Как я могу извлечь url anoter? Или список -> dict? (dict() не работает или я глупо).

ответ

1

'your_list [0] [' image_permalink '] # ->http://bluebeetlezar.tumblr.com/image/101630187766

your_list[0]['photos'][0]['original_size']["url"] # -> http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg 

У вас есть только один элемент внутри списка, который является ДИКТ, используйте your_list[0] для доступа к нему затем использовать ключи, чтобы получить любой URL-адрес, который вам нужен.

In [27]: your_list[0]['photos'][0]['original_size']['url'] 
Out[27]: 'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg' 
+0

я получаю постоянную ссылку, но я не могу получить {u'url ': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg ' –

+0

Я добавил вывод, я запускаю код в списке в вашем вопросе –

+0

Он работает, спасибо u! –

1

Вот несколько вещей, которые вы можете попробовать:

L = [{u'highlighted': [], u'image_permalink': u'http://bluebeetlezar.tumblr.com/image/101630187766', u'reblog_key': u'RWjDEE41', u'format': u'html', u'timestamp': 1414973540, u'note_count': 0, u'tags': [u'train', u'railway', u'station', u'silent', u'morning'], u'photos': [{u'caption': u'', u'original_size': {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg', u'width': 640, u'height': 640}, u'alt_sizes': [{u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_1280.jpg', u'width': 640, u'height': 640}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_500.jpg', u'width': 500, u'height': 500}, {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_400.jpg', u'width': 400, u'height': 400}, {u'url': u'http://38.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_250.jpg', u'width': 250, u'height': 250}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_100.jpg', u'width': 100, u'height': 100}, {u'url': u'http://33.media.tumblr.com/aa3018b3d8b147dc49e4b407b62f2b94/tumblr_nefsklMDSb1s385n2o1_75sq.jpg', u'width': 75, u'height': 75}]}], u'id': 101630187766, u'post_url': u'http://bluebeetlezar.tumblr.com/post/101630187766/stasiun-gondangdia-in-the-morniiiiinnngg', u'caption': u'<p>Stasiun Gondangdia in the morniiiiinnngg :) #railway #station #train #morning #silent</p>', u'state': u'published', u'short_url': u'http://tmblr.co/Z2EiHt1UfePZs', u'date': u'2014-11-03 00:12:20 GMT', u'link_url': u'http://instagram.com/p/u6sFevMNJ2/', u'type': u'photo', u'slug': u'stasiun-gondangdia-in-the-morniiiiinnngg', u'blog_name': u'bluebeetlezar'}] 

def printUrls(L): 
    whitelist = set(["u'image_permalink", "url"]) 
    for d in L: 
     if isinstance(d, dict): 
      for k in d: 
       if k in whitelist: 
        print(d[k]) 
        continue 

     if isinstance(d, list): 
      printUrls(d) 

Или:

def printUrls(L): 
    for d in L: 
     if isinstance(d, dict): 
      for _k,v in d.items(): 
       if v.startswith('http'): 
        print(v) 
        continue 

     if isinstance(d, list): 
      printUrls(d) 
Смежные вопросы