列表中最重复的元素

2024-09-28 23:44:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数,在列表中查找重复次数最多的元素。我想遍历列表,检查每个元素的计数并比较它们(使用2个变量numnumnumnum2

出了点问题,它总是打印6

l1 = [1, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 6, 6, 3, 4, 2, 6]

print(l1)


def mostrepeating(list1=None):
    if list1 is None:
        print('No list was received in the function.')
    else:
        numnum, numnum2, result = 0, 0, 0
        for num in list1:
            if list1.index(num) == 0:
                numnum = list1.count(num)
                result = num
            else:
                numnum2 = list1.count(num)
                if numnum2 > numnum:
                    result = num
                    numnum = numnum2
        print(result)


mostrepeating(l1)

Tags: innone元素l1列表ifcountresult
3条回答

您还可以使用collections模块中的Counter class

>>> l1 = [1, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 6, 6, 3, 4, 2, 6]
>>> from collections import Counter
>>> Counter(l1).most_common(1)[0][0]
7

问题在于if list1.index(num) == 0,它将results重置为1,从而丢失了以前的计数。删除它并将result设置为列表中的第一项。为了减少迭代次数,您还应该迭代set个数字

def mostrepeating(list1=None):
    if list1 is None:
        print('No list was received in the function.')
    else:
        numnum, numnum2, result = 0, 0, 0
        s = set(l1)
        result = list1[0]
        for num in s:
            numnum2 = list1.count(num)
            if numnum2 > numnum:
                result = num
                numnum = numnum2
        print(result)
l1 = [1, 5, 7, 7, 7, 7, 7, 7, 7, 7, 1, 3, 6, 6, 3, 4, 2, 6,6,6,6,6,6,6,6,6,6,6,6,6]

appear_dict = {}
for n in l1:
    appear_dict[n] = appear_dict.get(n, 0) + 1

most_repeat = l1[0]
for key, val in appear_dict.items():
    most_repeat = key if val > most_repeat else most_repeat

print(most_repeat)

相关问题 更多 >