首页 > 解决方案 > 有条件地更新/插入字典的替代方法

问题描述

所以我有这段代码

dic = {}

for (k,v) in list:
    if k in dic.keys():
        dic[k] += [v]
    else:
        dic[k] = [v]

return dic

有什么办法可以让我用更干净的方式写这个吗?

标签: pythondictionary

解决方案


使用defaultdict

lst = [('a', 1), ('b', 2)]
dic = collections.defaultdict(list)
for (k, v) in lst: dic[k].append(v)

从文档中的示例中,另一种不使用defaultdict的方法是使用setdefault

lst = [('a', 1), ('b', 2)]
dic = {}
for (k, v) in lst: dic.setdefault(k, []).append(v)

据说这个方法比第一种慢


推荐阅读