我有一个难以搜索的词典:
{'results':
{'opensearch:itemsPerPage': '1', 'artistmatches':
{'artist': [{'streamable': '0', 'image':
[{'#text': 'http://img2-ak.lst.fm/i/u/34s/d593a102f004491689bc7e07d8fb09ba.png', 'size': 'small'},
{'#text': 'http://img2-ak.lst.fm/i/u/64s/d593a102f004491689bc7e07d8fb09ba.png', 'size': 'medium'},
{'#text': 'http://img2-ak.lst.fm/i/u/174s/d593a102f004491689bc7e07d8fb09ba.png', 'size': 'large'},
{'#text': 'http://img2-ak.lst.fm/i/u/300x300/d593a102f004491689bc7e07d8fb09ba.png', 'size': 'extralarge'},
{'#text': 'http://img2-ak.lst.fm/i/u/d593a102f004491689bc7e07d8fb09ba.png', 'size': 'mega'}],
'listeners': '3251959', 'name': 'Michael Jackson'}]}}}
现在我正在尝试使用key ='#text'获取最大可能值(如果可能的话,Mega)。
是否有一种简单的方法可以循环遍历这个字典,还是需要使用大量的for循环?
答案 0 :(得分:1)
定义具有相对排序的字典:
sizes = ('small', 'medium', 'large', 'extralarge', 'mega')
sizemap = {size: value for value, size in enumerate(sizes)}
将该地图与max()
功能一起使用,以查找给定artist
条目的最大图像尺寸:
for artist in data['results']['artistmatches']['artist']:
image = max(artist['image'], key=lambda i: sizemap[i['size']])
image_url = image['#text']
演示(data
绑定到问题中指定的字典):
>>> for artist in data['results']['artistmatches']['artist']:
... image = max(artist['image'], key=lambda i: sizemap[i['size']])
... image_url = image['#text']
... print(image_url)
...
http://img2-ak.lst.fm/i/u/d593a102f004491689bc7e07d8fb09ba.png