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中是否存在类似的内容?
对于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)
现在您有订单给您最常见的计数.
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |