python - 计算列表中的对数,不考虑顺序

标签 python list collections tuples counter

例如,如果我有以下脚本:

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/

相关文章:

java - Scala - 链接两个隐式转换时如何进行模式匹配?

python - 'NoneType' 对象没有属性 'sendall' PYTHON

python - 在 visual studio 代码中注释 python 代码

c - 链表、值、添加和删除

jquery - 使不同的li(父子)具有相同的宽度

python:从收集计数器获取百分比

python - numpy 数组中非唯一行的快速组合,映射到列(即快速数据透视表问题,没有 Pandas)

python - Tornado :如何为多个请求共享 pymongo 连接?

python - 编辑列表列表中的字符串

C#:在键是对象的地方使用 ContainsKey