如何解决Python 函数显示出现次数最多的数字,如果有平局,则返回两者数量 = [1,2,3,2,1,2,2,4,5,4,4,4]
我制作了这段 Python 代码来存储字典中的键和值
num = [1,2,3,1,4,5,4]
dict1 = {}
for val in num:
if val in dict1:
dict1[val] = dict1[val] + 1
else:
dict1[val] = 1;
print(max(dict1,key=dict1.get))
Max 函数返回它遇到的第一个值。如果出现平局,请告知该怎么做。
谢谢!
解决方法
我建议使用 Counter
from collections import Counter
def frequency(myList: list):
counter = Counter(myList)
most_common = counter.most_common()
return dict(most_common)
num = [1,2,3,1,4,5,4]
highest = list(frequency(num).items())[0] # will be (2,4)
,
num = [1,4]
dict1 = {}
maxfreq = 0
for val in num:
if val in dict1:
dict1[val] = dict1[val] + 1
if(dict1[val]>maxfreq):
maxfreq = dict1[val]
else:
dict1[val] = 1
if(dict1[val]>maxfreq):
maxfreq = dict1[val]
for i in dict1:
if(dict1[i]==maxfreq):
print(i)
我基本上是存储最大频率的值并在字典上重复打印所有值与最大频率匹配的键。
,您可以添加此行以获取列表中的所有所需值。
num = [1,4]
dict1 = {}
for val in num:
if val in dict1:
dict1[val] = dict1[val] + 1
else:
dict1[val] = 1;
maxkey = max(dict1,key=dict1.get)
print([key for key in dict1 if dict1[key]==dict1[maxkey]])
输出:
[2,4]
,
在这里使用字典可能会过度使用。您可以在没有额外模块的情况下在线性时间内实现此功能。
nums = [1,4]
def max_in_list(nums):
max_list = []
max_value = 0
for i in nums:
if i > max_value:
max_list = [i]
max_value = i
elif i == max_value:
max_list.append(i)
return max_list
assert max_in_list(nums) == [5,5]
print(max_in_list(nums))
,
我想我一定没有抓住重点,因为我看到了一些非常复杂的解决方案,对我来说看起来很简单的问题。
def maxes(nums):
return [m for m in nums if m == max(nums)]
>>> nums = [1,4]
>>> maxes(nums)
[5,5]
>>> nums = [1,6]
>>> maxes(nums)
[6]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。