在dict中处理keyerror的最佳方法

时间:2016-04-13 12:07:40

标签: python dictionary

当我尝试从dict中获取值时,我想知道处理keyerror的最佳方法。

我需要这个,因为我的dict掌握了一些事件的数量。每当一个事件发生时,我从dict中取出计数并递增并将其放回去。

我在网上找到了一些解决方案,但它们用于其他一些语言。任何帮助表示赞赏。

我正在处理keyerror异常。想知道在字典中处理keyerror的最佳方法。

注意:这不是关于计算列表中的项目,而是关于从dict检索值(不存在)时处理异常。

4 个答案:

答案 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