例如,如果我有以下脚本:
import collections
lst = [['a','b'],['b','a'],['c','d'],['c','d'],['d','c']]
print([(a, b, v) for (a, b),v in collections.Counter(map(tuple,lst)).items()])
我得到输出:
[('a', 'b', 1), ('b', 'a', 1), ('c', 'd', 2), ('d', 'c', 1)]
我能否调整我的代码以产生以下输出:
[('a', 'b', 2), ('c', 'd', 3)]
所以一个函数不包含对的顺序?
最佳答案
使用不关心顺序的数据结构。在这种情况下,您将需要 frozenset
而不是常规的 set
因为 Counter
要求它是可散列的。但基本上它是 tuple
在您的原始代码中对 frozenset
的简单替换:
print([(a, b, v) for (a, b),v in collections.Counter(map(frozenset,lst)).items()])
输出:
[('a', 'b', 2), ('d', 'c', 3)]
关于python - 计算列表中的对数,不考虑顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59576440/