JSON字典查找

2024-06-08 15:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本很难查的字典:

{'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循环?你知道吗


Tags: texthttpsize字典pngartistopensearchresults
1条回答
网友
1楼 · 发布于 2024-06-08 15:55:35

定义具有相对顺序的词典:

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

相关问题 更多 >