我有以下代码,但它仅根据原始顺序返回列表中最常见的元素-Lila。但是,我也想打印出另一个最常见的元素-亚历山大。我已经尝试过max函数,但是似乎不起作用。
list_of_names = ["Kanisha", "Candance", "Lila", "Lupe", "Alexander", "Candance",
"Irvin", "Kanisha", "Lila", "May", "Lila", "Alexander", "Ivana", "Alexander"]
def most_frequent(item_list):
dict = {}
count = 0
itm = ''
for item in item_list:
dict[item] = dict.get(item, 0) + 1
if dict[item] >= count :
count = dict[item]
itm = item
return max(dict, key = dict.get)
print (most_frequent(list_of_names))
很抱歉成为python新手。但是我尝试了不同的解决方案,但是没有用。
答案 0 :(得分:0)
>>> multimode(list_of_names)
['Lila', 'Alexander']
答案 1 :(得分:0)
请注意,count
和itm
在您的代码中没有任何作用。
def most_frequent(item_list):
res = {}
for item in item_list:
res[item] = res.get(item, 0) + 1
n = max(res.values())
for k, v in res.items():
if v==n:
print(k)
most_frequent(list_of_names)
答案 2 :(得分:-1)
list_of_names = ["Kanisha", "Candance", "Lila", "Lupe", "Alexander", "Candance",
"Irvin", "Kanisha", "Lila", "May", "Lila", "Alexander", "Ivana", "Alexander"]
unique_list_of_name = list(dict.fromkeys(list_of_names))
for name in unique_list_of_name :
print('The name '+name+' appear '+str(list_of_names.count(name))+' in liste_of_names')
如果您喜欢某个功能,可以尝试以下方法:
list_of_names = ["Kanisha", "Candance", "Lila", "Lupe", "Alexander", "Candance",
"Irvin", "Kanisha", "Lila", "May", "Lila", "Alexander", "Ivana", "Alexander"]
def most_frequent(item_list,top=1):
unique_item_list = list(dict.fromkeys(item_list))
counting_item_list=[]
for item in unique_item_list :
counting_item_list.append([item_list.count(item),item])
counting_item_list.sort(reverse=True)
print(counting_item_list[:top])
in:most_frequent(list_of_names) out:[[3,'Lila']]
in:most_frequent(list_of_names,top = 3) 出来:[[3,'Lila'],[3,'Alexander'],[2,'Kanisha']]