当我尝试从dict中获取值时,我想知道处理keyerror的最佳方法。
我需要这个,因为我的dict掌握了一些事件的数量。每当一个事件发生时,我从dict中取出计数并递增并将其放回去。
我在网上找到了一些解决方案,但它们用于其他一些语言。任何帮助表示赞赏。
我正在处理keyerror异常。想知道在字典中处理keyerror的最佳方法。
注意:这不是关于计算列表中的项目,而是关于从dict检索值(不存在)时处理异常。
答案 0 :(得分:7)
如果您想使用dict.get
dict
mydict[key] = mydict.get(key, 0) + 1
或者您可以处理KeyError
try:
mydict[key] += 1
except KeyError:
mydict[key] = 1
或者您可以使用defaultdict
from collections import defaultdict
mydict = defaultdict(int)
mydict[key] += 1
答案 1 :(得分:4)
您要执行的操作的最合适的数据结构是collections.Counter
,其中缺少的键的隐含值为0
:
from collections import Counter
events = Counter()
for e in "foo", "bar", "foo", "tar":
events[e] += 1
答案 2 :(得分:2)
collections.defaultdict可以帮助构建 pythonic 代码:
method
答案 3 :(得分:0)
Python中的异常并不是非常昂贵。
另外,如果您认为大部分时间都在寻找您正在寻找的钥匙(计数),那就完全没问了。
d = {}
while True:
try:
d['count'] += 1
except KeyError:
d['count'] = 1 # happens only once