更好的方式来写'分配A或如果不可能 - B'

San*_*uuu 0 python compound-assignment

所以,在我的代码中,我有一个字典,我用来计算我以前没有知道的项目:

if a_thing not in my_dict:
    my_dict[a_thing] = 0
else:
    my_dict[a_thing] += 1
Run Code Online (Sandbox Code Playgroud)

显然,我不能增加一个尚不存在的值的条目.出于某种原因,我有一种感觉(在我仍然缺乏Python经验的大脑中)可能存在更多的Pythonic方法,例如,一些构造允许将表达式的结果分配给某个东西,如果不可能的话否则在一个声明中.

那么,Python中是否存在类似的内容?

idj*_*jaw 5

对于defaultdict来说,这看起来不错collections.请注意以下示例:

>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> d['a'] += 1
>>> d
defaultdict(<class 'int'>, {'a': 1})
>>> d['b'] += 1
>>> d['a'] += 1
>>> d
defaultdict(<class 'int'>, {'b': 1, 'a': 2})
Run Code Online (Sandbox Code Playgroud)

defaultdict将采用一个表示初始值的参数.在这种情况下,您正在增加整数值,因此您需要int.

或者,既然您正在计算项目,您也可以(如评论中所述)使用Counter,它最终会为您完成所有工作:

>>> d = Counter(['a', 'b', 'a', 'c', 'a', 'b', 'c'])
>>> d
Counter({'a': 3, 'c': 2, 'b': 2})
Run Code Online (Sandbox Code Playgroud)

它还附带一些不错的奖金.喜欢most_common:

>>> d.most_common()
[('a', 3), ('c', 2), ('b', 2)]
Run Code Online (Sandbox Code Playgroud)

现在您有订单给您最常见的计数.