检索列表中的多个最常见元素

时间:2020-07-29 13:03:42

标签: python list

我有以下代码,但它仅根据原始顺序返回列表中最常见的元素-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新手。但是我尝试了不同的解决方案,但是没有用。

3 个答案:

答案 0 :(得分:0)

使用statistics.multimode

>>> multimode(list_of_names)
['Lila', 'Alexander']

答案 1 :(得分:0)

请注意,countitm在您的代码中没有任何作用。

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']]

相关问题