【发布时间】:2018-12-06 14:09:08
【问题描述】:
我想添加一个计数为 1 的键,并在每次增加时递增,这是一个经典操作。这是我的常规代码。
d = OrderedDict()
for i, v in enumerate(s):
if v not in d:
d[v] = 1
else:
d[v] += 1
如何使用 setdefault 而不是 collections. Counter 使用 1 行代码执行此操作
就像如果这是一个列表,那么我可以做到,
d.setdefault(v, []).append()
有没有办法用整数加法做类似的事情。
【问题讨论】:
-
collections.Counter有什么问题?还有collections.defaultdict? -
什么是
s?你的意思是enumerate(d)? -
使用defaultdict怎么样?
-
您不能使用
setdefault()执行此操作,因为它返回已设置的对象,并且由于整数是不可变的,因此更改它们不会更改原始对象,而是会创建一个新对象。现在一种解决方法是使用 @J. Snow 提议或创建自己的字典,其性能类似于Orderdict和defaultdict。
标签: python python-3.x dictionary counter ordereddictionary