迭代复杂的字典

时间:2018-04-16 14:38:41

标签: python python-3.x dictionary

我有一个如下的字典,如你所见,我正在尝试打印不在字典中的key_p。我想检查我的key_p是否存在于字典中,打印该值以及key_p何时不在字典中打印0

当我放置条件elif时,它将打印两次0(=字典中元素的数量)但我只想检查key_p,这意味着{ {1}}在字典中打印key_p,如果字典中只有1不在打印key_p

0

2 个答案:

答案 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))