如果某些元素重复相同的时间,则列表中的最高发生率

2024-04-27 21:07:46 发布

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

我需要编写一个函数来接收列表并返回重复次数最多的元素的列表。我的问题是,我编写的函数只返回一个重复的元素,我需要所有重复次数最多的元素(如果它们重复相同的次数)。在这个例子中,我把函数需要返回钻石黑桃,但是结果我刚刚返回了钻石

def getHighestOcurrence(listAnyKind): 
    counter = 0
    num = listAnyKind[0] 
      
    for i in listAnyKind: 
        frequency = listAnyKind.count(i) 
        if (frequency > counter): 
            counter = frequency 
            num = i 
  
    return num 
  

listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 
    
print(getHighestOcurrence(listAnyKind))

Tags: 函数元素列表defcounter次数num例子
3条回答

试试看:

def getHighestOcurrence(listAnyKind): 
    counter = 0
    num = listAnyKind[0] 
    frequency = {}  
    for i in set(listAnyKind): 
        frequency[i] = listAnyKind.count(i) 
     
    return [k for k in frequency if frequency[k] == max(frequency.values())]
  

listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 

print(getHighestOcurrence(listAnyKind))

以下是如何从“集合”模块中使用Counter

from collections import Counter

def getHighestOcurrence(listAnyKind):
    c = Counter(listAnyKind)
    m = max(c.values())
    return [k for k in c if c[k] == m]

listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 
print(getHighestOcurrence(listAnyKind))

输出:

['diamonds', 'spades']
def getHighestOcurrence(listAnyKind):
   highest_count = 0  
   checked = []
   return_items = []
   for i in listAnyKind:
      if i in checked:
         continue
      else: 
         count = listAnyKind.count(i)
      if count > highest_count:
         highest_count = count
         return_items = [i]
      elif count == highest_count:
         return_items.append(i)
      checked.append(i)
   return return_items
listAnyKind = ['diamonds', 'spades', 'spades', 'clubs','hearts', 'diamonds'] 
print(getHighestOcurrence(listAnyKind))

这里有一个替代解决方案,它的效率不如使用collections模块中的计数器,但可以这样做

相关问题 更多 >