我有一个清单:
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的键。
有一种简单的方法吗?或者我应该尝试不同的方法吗?
谢谢。
答案 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']