我正在尝试检查某个键是否存在于嵌套的dict中。
例如:
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'的值中。
我试过这样做:
print(any(0 in d for d in x if '11' in d))发布于 2020-08-09 22:32:00
看起来这会实现你想要做的事情:
any(['11' in d.keys() and 0 in d['11'].keys() for d in x])说明:
在名为x;
'11'的键,并在其值(也应该是字典)中搜索0;
True;否则,返回False.在问题的评论中,Sushanth提供了一种更短、可能更Pythonic的方法,使用generator和字典的get()方法,并将空字典作为后备值:
any(d.get('11', {}).get(0) for d in x)发布于 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 -
True否则返回#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)[True]发布于 2020-08-09 22:36:25
要做到这一点,最原始的方法可能只是一个if条件:
if '11' in x[0]:
print("11 in x")
if 0 in x[0]['11']:
print("0 in 11")您还可以使用for循环:
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")https://stackoverflow.com/questions/63327372
复制相似问题