查看列表以查找哪些项目重复超过X次,然后返回这些项目

时间:2016-10-22 19:54:04

标签: python-3.x

我有一个清单:

my_list = ['2', '5', '7', '7', '5']

我需要能够检查列表中是否有任何项目重复X时间,如果是,那么 - 哪一项。例如,我想检查上面列表中是否有任何(和哪些)项重复(2)次,在这种情况下我会期望:

5, 7 # this can be in the form of a list, strings, or anything else.

我尝试了什么:

在查看StackExchange上的一些帖子之后,我首先继续使用collections-counter(不确定这是否是一个好方法),如下所示:

repetition = collections.Counter(my_list)

这会返回一个字典,如下所示:

{'5': 2, '7': 2, '2': 1}

现在我还需要检查哪些项重复两次。经过一番搜索后,我最终得到了这个:

def any(dict):
    repeating = []
    for element in dict.values():
        if element == 2:
            (...)

我不确定如何继续使用此代码。好像我只能得到重复次数,在这个' 2' (即字典中的值),但我无法找到一个简单的方法来获取值为2的键。

有一种简单的方法吗?或者我应该尝试不同的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要遍历items of the dictionary,以便同时拥有密钥和值:

repeating = [key for key, value in repetition.items() if value >= 2]

我在这里使用了列表理解来进行循环;选择值为2或更高的所有键。

演示:

>>> from collections import Counter
>>> my_list = ['2', '5', '7', '7', '5']
>>> repetition = Counter(my_list)
>>> [key for key, value in repetition.items() if value >= 2]
['5', '7']