首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:检查嵌套字典中是否存在键

Python:检查嵌套字典中是否存在键
EN

Stack Overflow用户
提问于 2020-08-09 22:15:53
回答 4查看 1.6K关注 0票数 0

我正在尝试检查某个键是否存在于嵌套的dict中。

例如:

代码语言:javascript
复制
x = [{
    '11': { 
        0: [
               {
                'bb_id': '122',
                'cc_id': '4343'
               }
           ],           
        
        1: [
               {
                'bb_id': '4334',
                'cc_id': '3443'
               },
               {
                'bb_id': '5345',
                'cc_id': '257'
               }
           ]
    }
}]

我需要检查密钥'11'是否存在于x中,并且进一步检查密钥0是否存在于密钥'11'的值中。

我试过这样做:

代码语言:javascript
复制
print(any(0 in d for d in x if '11' in d))
EN

回答 4

Stack Overflow用户

发布于 2020-08-09 22:32:00

看起来这会实现你想要做的事情:

代码语言:javascript
复制
any(['11' in d.keys() and 0 in d['11'].keys() for d in x])

说明:

在名为x;

  • Search的列表中,

  • 遍历每个字典,查找'11'的键,并在其值(也应该是字典)中搜索0;

  • If的键。这两个条件都满足,则返回True;否则,返回False.

在问题的评论中,Sushanth提供了一种更短、可能更Pythonic的方法,使用generator和字典的get()方法,并将空字典作为后备值:

代码语言:javascript
复制
any(d.get('11', {}).get(0) for d in x)
票数 3
EN

Stack Overflow用户

发布于 2020-08-09 22:31:38

这里有一个字典的列表,它的值是一个字典的列表。,

试试这个单行的列表理解。x这里是一个字典列表(在本例中只有一个字典)。下面的代码为x、if '11' exists in its key和if 0 exists in the key of value of '11'中的每个字典返回True。仅当这两个条件都满足时,才会得到一个TRUE else FALSE -

  1. 遍历x的项
  2. 遍历x的项内的字典
  3. 检查x中的项是否具有key = '11‘,如果x项内的dict中的项具有key =0
  4. 如果这两个条件都满足,则返回True否则返回

代码语言:javascript
复制
#Items to detect
a = '11'
b = 0

#Iterate of the nested dictionaries and check conditions
result = [(k==a and b in v.keys()) for i in x for k,v in i.items()]
print(result)
代码语言:javascript
复制
[True]
票数 1
EN

Stack Overflow用户

发布于 2020-08-09 22:36:25

要做到这一点,最原始的方法可能只是一个if条件:

代码语言:javascript
复制
if '11' in x[0]:
    print("11 in x")

if 0 in x[0]['11']:
    print("0 in 11")

您还可以使用for循环:

代码语言:javascript
复制
for d in x:
    if '11' in d:
        print("11 in d")
        if any(d['11']) and 0 in d['11']:
            print("0 in 11")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63327372

复制
相关文章

相似问题

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