字典理解,同时检查密钥是否已存在?

时间:2018-02-17 14:01:01

标签: python dictionary-comprehension

我知道您可以使用以下方法检查密钥是否存在:

if key in mydict:
    ...

但是我希望以某种方式在字典理解中使用它来构造字典。

例如:

mylist = [('a', 0.01), ('b', 0.02), ('c', 0.03), ('a', 0.04)]
mydict = {item[0]: item[1] for item in mylist if item[0] not in mydict else blah blah}

实现这一目标的最佳方式是什么?

我也需要其他部分。

编辑:澄清。在我的情况下,我实际上需要具有给定项[0]值的所有项目的项目[1]值的总和。

2 个答案:

答案 0 :(得分:2)

Python dict是具有唯一键的无序结构。 因为您需要首先遇到的键的值 - 以相反的顺序迭代输入列表:

mylist = [('a', 0.01), ('b', 0.02), ('c', 0.03), ('a', 0.04)]
mydict = {t[0]:t[1] for t in mylist[::-1]}

print(mydict)

输出:

{'a': 0.01, 'c': 0.03, 'b': 0.02}

答案 1 :(得分:2)

字典理解:

mylist = [('a', 0.01), ('b', 0.02), ('c', 0.03), ('a', 0.04)]
mydict = {key:value for key, value in mylist[::-1]}
print(mydict)

输出:

{'a': 0.01, 'c': 0.03, 'b': 0.02}

没有词典理解:

mydict = {}
for key, value in mylist:
    if key not in mydict:
        mydict[key] = value
    else:
        # You asked for the else part. Do whatever here.   
print(d)

输出:

{'a': 0.01, 'c': 0.03, 'b': 0.02}