python - 有条件地更新/插入字典的替代方法
问题描述
所以我有这段代码
dic = {}
for (k,v) in list:
if k in dic.keys():
dic[k] += [v]
else:
dic[k] = [v]
return dic
有什么办法可以让我用更干净的方式写这个吗?
解决方案
使用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)
据说这个方法比第一种慢
推荐阅读
- php - Azure PHP 函数转义字符串输出
- python - 比较斐波那契算法的速度
- r - 分布 dbin JAGS 中的离散值参数检查失败
- haskell - LiftM2 的懒惰版本
- r - 学习者:如何通过更改 ID 和版本使本地存储的工作无效?
- vba - stuck with my vba code to filter find data based on date
- python - how do i add input on python on repl.it?
- javascript - Form validation by JS
- bash - AWK processing "()" on the input stream
- c++ - 错误:不支持 GLSL 3.30。支持的版本有:1.10、1.20、1.30、1.00 ES、3.00 ES、3.10 ES 和 3.20 ES