Python 处理dict中键错误的最佳方法

Python 处理dict中键错误的最佳方法,python,dictionary,Python,Dictionary,我想知道当我试图从dict中获取一个值时,处理键错误的最佳方法 我需要这个,因为我的字典里有一些事件的计数。每当一个事件发生时,我从dict中取出计数,递增,然后放回去 我在网上找到了一些解决方案,但它们适用于其他一些语言。感谢您的帮助 我现在正在处理keyerror异常。想知道处理字典中键错误的最佳方法 注意:这不是关于计算列表中的项目,而是关于从dict检索值(不存在)时处理异常。如果要使用dict,可以使用dict.get mydict[key] = mydict.get(key, 0)

我想知道当我试图从dict中获取一个值时,处理键错误的最佳方法

我需要这个,因为我的字典里有一些事件的计数。每当一个事件发生时,我从dict中取出计数,递增,然后放回去

我在网上找到了一些解决方案,但它们适用于其他一些语言。感谢您的帮助

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


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

如果要使用
dict,可以使用
dict.get

mydict[key] = mydict.get(key, 0) + 1
from collections import defaultdict
mydict = defaultdict(int)
mydict[key] += 1
或者您可以处理
KeyError

try:
    mydict[key] += 1
except KeyError:
    mydict[key] = 1
或者您可以使用
defaultdict

mydict[key] = mydict.get(key, 0) + 1
from collections import defaultdict
mydict = defaultdict(int)
mydict[key] += 1

Python中的异常并不昂贵

另外,如果你认为大多数时候你要找的钥匙(计数)在那里,那就完全好了。< /P>

d = {}
while True:
    try:
        d['count'] += 1
    except KeyError:
        d['count'] = 1  # happens only once
可能有助于构建Python代码:


对于您要执行的操作,最合适的数据结构是
collections.Counter
,其中缺少的键的隐式值为
0

from collections import Counter
events = Counter()
for e in "foo", "bar", "foo", "tar":
    events[e] += 1

收藏怎么样?计数器?好的,我试试。是否有类似get(“,”)@MukundGandlur尝试是的确实有
。get
会很好,
setdefault
用于可变的就地值。get正是我想要的。除了代码中的每一个地方,没有尝试是很好的。没有计数器。。。那会更。。。蟒蛇的。