Best way to handle a keyerror in a dict
当我试图从dict中获取值时,我想知道处理keyerror的最佳方法。
我需要这个,因为我的口述记录了一些事件的计数。每当一个事件发生时,我从听写中提取计数,然后递增并放回原处。
我在网上找到了一些解决方案,但它们适用于其他语言。感谢您的帮助。
我正在处理keyError异常。想知道在字典中处理keyerror的最佳方法。
注意:这不是对列表中的项目进行计数,而是在从dict中检索值(不存在)时处理异常。
如果要使用
1 | mydict[key] = mydict.get(key, 0) + 1 |
或者你可以处理
1 2 3 4 | try: mydict[key] += 1 except KeyError: mydict[key] = 1 |
号
或者你可以使用
1 2 3 | from collections import defaultdict mydict = defaultdict(int) mydict[key] += 1 |
您要做的最合适的数据结构是
1 2 3 4 | from collections import Counter events = Counter() for e in"foo","bar","foo","tar": events[e] += 1 |
。
collections.defaultdict可以帮助构建Python代码:
1 2 3 | count = collections.defaultdict(int) # => default value is 0 ... count[event] += 1 # will end to 1 on first hit and will increment later |
python中的异常并不十分昂贵。
另外,如果你认为大部分时间你在寻找的钥匙(计数)都在那里,那么它是完全好的。
1 2 3 4 5 6 | d = {} while True: try: d['count'] += 1 except KeyError: d['count'] = 1 # happens only once |
。