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