首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在嵌套字典中搜索值

在嵌套字典中搜索值
EN

Stack Overflow用户
提问于 2022-04-21 03:53:13
回答 2查看 44关注 0票数 1

我想在下面的字典列表中找到一个特殊的键值对。在本例中,administrative_area_level_1并从该字典中获取short_name键的值。

列表的内容各不相同,因此我不能简单地使用索引访问它,例如,我不能做类似于s[0]['address_components'][4]的事情。

下面是字典的示例列表:

代码语言:javascript
复制
[{'address_components': [{'long_name': '5555',
    'short_name': '5555',
    'types': ['street_number']},
   {'long_name': 'East 14th Street',
    'short_name': 'E 14th St',
    'types': ['route']},
   {'long_name': 'Tucson',
    'short_name': 'Tucson',
    'types': ['locality', 'political']},
   {'long_name': 'Pima County',
    'short_name': 'Pima County',
    'types': ['administrative_area_level_2', 'political']},
   {'long_name': 'Arizona',
    'short_name': 'AZ',
    'types': ['administrative_area_level_1', 'political']},
   {'long_name': 'United States',
    'short_name': 'US',
    'types': ['country', 'political']},
   {'long_name': '85711', 'short_name': '85711', 'types': ['postal_code']}],
  'formatted_address': '5555 E 14th St, Tucson, AZ 85711, USA',
  'geometry': {'bounds': {'northeast': {'lat': 32.2180021,
     'lng': -110.8732351},
    'southwest': {'lat': 32.2169439, 'lng': -110.8750912}},
   'location': {'lat': 32.2175302, 'lng': -110.874105},
   'location_type': 'GEOMETRIC_CENTER',
   'viewport': {'northeast': {'lat': 32.2188219802915,
     'lng': -110.8728141697085},
    'southwest': {'lat': 32.2161240197085, 'lng': -110.8755121302915}}},
  'place_id': 'ChIJM8Ct8ZVv1oYRG5lGDi',
  'types': ['premise']}]

如何获得以下预期输出?

代码语言:javascript
复制
'AZ'
EN

回答 2

Stack Overflow用户

发布于 2022-04-21 04:10:05

您可以使用.get().filter()来忽略没有types键并且在types列表中没有目标字符串的任何二叉树。从那里,您可以直接访问short_name键:

下面是一个代码片段,它查找满足上述属性的所有字典的所有short_name

代码语言:javascript
复制
target = 'administrative_area_level_1'
retained_items = list(filter(lambda x: target in x.get('types', []),
    data[0]['address_components']))

for item in retained_items:
    print(item['short_name'])

这一产出如下:

代码语言:javascript
复制
AZ

如你所愿。

票数 1
EN

Stack Overflow用户

发布于 2022-04-21 04:10:43

这样您就可以实现它,其中数据是您给定的字典列表。

代码语言:javascript
复制
target_key = 'administrative_area_level_1'
target_value_of = 'short_name'
for i in data:
    if(i['address_components']):
        for d in i['address_components']:
            if(target_key in d['types']):
                print(d[target_value_of])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71948751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档