将带冒号的键添加到计数器

Add a key with colon to a Counter

我想向一个内部有几个冒号 (:) 字符的 Counter 对象添加一个键。问题是 Counter 对象为我的键中的每个字符添加了一个键。例如:

>>> cc = Counter()
>>> cc.update("1:2:3")
>>> cc
Counter({':':2, '1':1, '2':1, '3':1})

我希望我的计数器像 Counter({'1:2:3':1})。我该怎么做?

Counter 基本上就是一个 dict。所以你可以通过普通的 dict 语法设置你的密钥:

cc["1:2:3"] = 1

在计数器更新中插入字典,如下所示:

from collections import Counter
cc = Counter()
cc.update({"1:2:3":1})
print cc
'Counter({'1:2:3': 1})'

Counter.update(iterable) 接受一个可迭代对象(提示:Python 字符串是一个可迭代对象)并更新可迭代对象的每个项目的计数 - 所以您得到的确实是预期的。

如果你真的想在这里使用 Counter.update(),你必须传递一个以 '1:2:3' 作为键和 1 作为值的字典,或者传递一个 (key, value) 的序列元组(即[("1:2:3", 1),])。

否则你可以当然使用 Daniel Roseman 提到的普通 dict 语法 - 如果你没有其他理由使用 update().