我有一个如下的字典,如你所见,我正在尝试打印不在字典中的key_p
。我想检查我的key_p
是否存在于字典中,打印该值以及key_p
何时不在字典中打印0
。
当我放置条件elif
时,它将打印两次0
(=字典中元素的数量)但我只想检查key_p
,这意味着{ {1}}在字典中打印key_p
,如果字典中只有1
不在打印key_p
。
0
答案 0 :(得分:1)
首先,sc_dict
是一个列表,而不是字典。
根据您的代码判断,我理解您的问题如下:在sc_dict
所持有的元组内的词典中,您想检查是否有任何特定键。
这是一种方法,使用any
内置函数(返回一个布尔值,我们根据您的要求转换为int
)和元组解包:
>>> sc_list = [('fl', {'ab': 1}), ('fl', {'abel': 1})]
>>> key = 'key_p'
>>> int(any(key in d for _, d in sc_list))
0
>>> key = 'abel'
>>> int(any(key in d for _, d in sc_list))
1
根据您的实际问题,从您的词典构建ChainMap
可能会有所帮助。以下示例介绍了该概念,并解决了原始问题。
>>> from collections import ChainMap
>>> cm = ChainMap(*(d for _, d in sc_list))
>>> cm
ChainMap({'ab': 1}, {'abel': 1})
>>> int('key_p' in cm)
0
>>> int('abel' in cm)
1
答案 1 :(得分:0)
以下是如何执行此操作的示例:
sc_dict=[('fl', {'ab': 1}), ('fl', {'abel': 1})]
key_p="tep"
dict_part = [sc[1] for sc in sc_dict]
together = {}
for item in dict_part:
together.update(item)
print(together.get(key_p, 0))