我正在尝试计算元组中的唯一字符串,并仅在列表中输出唯一字符串及其计数。我试图使用list comp。但有一些问题:
def tupleTag(inputList):
from collections import Counter
c = Counter(inputList[0] for inputList in inputList)
print set(inputList[0], c)
inputList = [('love','family'),('dinner','family','nomnom'),('wedding','romance','love')]
tupleTag(inputList)
正确的输出是=
[(love,2), (family,2)]
答案 0 :(得分:2)
您似乎与collections.Counter
走在了正确的轨道上。我也会投入itertools.chain
:
items = itertools.chain.from_iterable(inputList)
counts = collections.Counter(items)
现在,您有一个项目地图,以及它们出现的次数。如果你想要一个(<key>, <count>)
形式的元组的排序列表,你可以使用most_common
方法 - 当然,你可以过滤它来只查找重复的字符串及其计数:
repeated_items = [(key, count) for key, count in counts.most_common() if count > 1]
注意,您实际上 most_common
并不需要过滤项目,但它会按照常见的顺序为您提供结果。如果没有必要,对项目进行简单的循环会更有效:
repeated_items = [(key, count) for key, count in counts.items() if count > 1]
答案 1 :(得分:1)
mgilson的答案很光滑,值得研究。这是使用理解的花园种类方法:
tups = ... # Your data.
c = Counter(x for tup in tups for x in tup)
result = [(k, n) for k, n in c.items() if n > 1]