我有一段代码迭代一个列表,然后根据键在字典中累积值,丑陋的部分是我需要检查键是否已经存在于字典中,如果不存在,那么我需要首先将值设置为零。
我想知道是否有更优雅的风格来实现这个:
for r in records:
if not d.has_key(r[0]):
d[r[0]] = 0
d[r[0]] += r[1]
更进一步,如果值是一个列表,那么如何重写下面的代码:
for (key, value) in records:
if not d.has_key(key):
d[key] = []
d[key].append(value)
请您参考如下方法:
您可以使用内置的 dict.get获取默认值的方法,像这样
for r in records:
d[r[0]] = d.get(r[0], 0) + r[1]
dict.get 的第二个参数是当键不在字典中时返回的默认值。
更好的是,您可以像这样解压值
for (key, value) in records:
d[key] = d.get(key, 0) + value
