gpt4 book ai didi

python - 如何从键/初始计数对列表中初始化计数器?

转载 作者:太空狗 更新时间:2023-10-30 00:31:15 25 4
gpt4 key购买 nike

如果我有一个 (key, value) 对序列,我可以像这样快速初始化一个字典:

>>> data = [ ('a', 1), ('b', 2) ]
>>> dict(data)
{'a': 1, 'b': 2}

我想对 Counter 字典做同样的事情;但是怎么办?构造函数和 update() 方法都将有序对视为键,而不是键值对:

>>> from collections import Counter
>>> Counter(data)
Counter({('a', 1): 1, ('b', 2): 1})

我能做到的最好的办法是使用一个临时字典,它很丑陋而且不必要地迂回:

>>> Counter(dict(data))
Counter({'b': 2, 'a': 1})

是否有正确的方法从 (key, count) 对列表中直接初始化一个 Counter?我的用例涉及从文件中读取大量保存的计数(使用唯一键)。

最佳答案

我会做一个循环:

for obj, cnt in [ ('a', 1), ('b', 2) ]:
counter[obj] = cnt

你也可以只调用父类的 dict.update 方法:

>>> from collections import Counter
>>> data = [ ('a', 1), ('b', 2) ]
>>> c = Counter()
>>> dict.update(c, data)
>>> c
Counter({'b': 2, 'a': 1})

最后,您的原始解决方案没有任何问题:

Counter(dict(list_of_pairs))

创建字典或计数器的昂贵部分是散列所有键并定期调整大小。字典制作完成后,将其转换为计数器非常便宜,与 dict.copy() 一样快。哈希值被重用,最终的 Counter 哈希表被预先调整大小(无需调整大小)。

关于python - 如何从键/初始计数对列表中初始化计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43824983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com