计算元组中的唯一字符串,Python

时间:2015-08-01 03:03:25

标签: python tuples

我正在尝试计算元组中的唯一字符串,并仅在列表中输出唯一字符串及其计数。我试图使用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)]

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]