如何计算列表中具有相同值(顺序无关紧要)的子列表
我试过这个:
from collections import Counter
Input = [
[
'Test123', 'heyhey123', 'another_unique_value',
],
[
'Test123', 'heyhey123', 'another_unique_value',
],
[
'heyhey123',
],
[
'Test123', 'heyhey123',
],
[
'another_unique_value', 'heyhey123', 'Test123'
]
]
Counter(str(e) for e in li)
Output:
Counter({
"['Test123', 'heyhey123', 'another_unique_value']": 2},
"['heyhey123']": 1},
"['Test123', 'heyhey123']": 1},
"['another_unique_value', 'heyhey123', 'Test123']": 1},
)
显然,它从帐户列表中的值中获取顺序。如果顺序不重要,如何计算子列表
我想要的输出是:
Counter({
"['Test123', 'heyhey123', 'another_unique_value']": 3},
"['heyhey123']": 1},
"['Test123', 'heyhey123']": 1},
)
我觉得你很接近
Counter(str(set(e)) for e in Input)
返回
这和你要找的几乎一样我相信:)
你可以替换
与
给出输出:
另一种选择是使用
set(e)
忽略列表中元素的顺序,但这有忽略重复的缺点-['Test123', 'heyhey123', 'another_unique_value']
将被视为与['Test123', 'heyhey123', 'another_unique_value', 'another_unique_value']
相同-此外,当从不易损坏的set
转换为包含在Counter
中时,不能保证相同的顺序相关问题 更多 >
编程相关推荐