我的下面的程序可以找到列表中出现最频繁的元素:
这意味着在列表中有两个最常见元素(在这种情况下,7和9都出现了三次,如上所示),但它只打印其中一个 - 在这种情况下为7。
是否有任何方法可以更改我的代码,以便输出正确?
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0]
counter = []
for num in range(10):
n = numbers.count(num)
counter.append(n)
largest = max(counter)
print(counter.index(largest))
输出结果为7,是正确的。
但是,如果我将另一个9添加到列表中:
numbers = [7, 1, 7, 9, 2, 9, 7, 3, 0, 9]
这意味着在列表中有两个最常见元素(在这种情况下,7和9都出现了三次,如上所示),但它只打印其中一个 - 在这种情况下为7。
是否有任何方法可以更改我的代码,以便输出正确?
groupby
提供了相同键的运行。您可以对列表进行排序,然后使用此方法。您提供的代码的输出是[(7, 1), (1, 1), (7, 1), (9, 1), (2, 1), (9, 1), (7, 1), (3, 1), (0, 1), (9, 1)]
。您还没有回答OP的问题,只是展示了一个(可能令人困惑的)key,count
列表,而没有解释它是如何工作的或者OP应该如何处理它。 - Ryan Haining