3
votes

Comment écrire une fonction qui trouve le mode d'une liste et l'enregistre en tant que dictionnaire?

J'ai besoin d'aide pour écrire une fonction findMode (aList) qui accepte une liste d'éléments comme paramètre, et procède à la recherche du mode. Cependant, votre solution Python doit utiliser un dictionnaire pour suivre les éléments et leurs décomptes comme méthode de recherche du mode (pas des listes parallèles).

Voici le code que j'ai déjà essayé:

>>> findMode([4,3,4,3,2,1,4,5,3,3,4,5,1,4,1,4,5])
[4]
>>> findMode(["horse ", "cat ", "dog ", "turtle ","horse ", "cat ", "dog ", "turtle "])
['horse ', 'cat ', 'dog ', 'turtle ']

Voici quelques exemples du résultat souhaité:

def findMode(aList):
    aList.sort()
    position = 0
    largestCount = 0
    listLength = len(aList)
    while(position <= listLength):
        count = aList.count(aList[position])
        if(count > largestCount):
            largestCount = count
            valuePosition = aList[position]
        position += count
    return aList[valuePosition]


0 commentaires

3 Réponses :


4
votes

Cela devrait faire l'affaire:

from collections import Counter

def findMode(aList):
    counter = Counter(aList)
    max_count = max(counter.values())
    return [item for item, count in counter.items() if count == max_count]


2 commentaires

Battez-moi comme 30 secondes!


Et moi. :-) Je l'ai dans mon presse-papiers.



0
votes
def findMode(aList):
  dic_freq = {}
  for element in aList:
    if element not in aList.keys():
      dic_freq[element] = 1
    else:
      dic_freq[element] += 1

  mode = [el for el in dic_freq.keys() if dic_freq[el] == max(dic_freq.values())]
  return mode
You can do it faster without dictionary but it works that way

1 commentaires

vous pouvez utiliser defaultdict pour éviter cet si l'élément n'est pas dans aList.keys (): dic_freq [element] = 1



0
votes
from collections import defaultdict
def findMode(aList):
    dic = defaultdict(int)
    for i in aList:
        dic[i]+=1
    mv = max(dic.values())
    return [i for i in dic if dic[i]==mv]

findMode([4,3,4,3,2,1,4,5,3,3,4,5,1,4,1,4,5])
# output [4]

findMode(["horse ", "cat ", "dog ", "turtle ","horse ", "cat ", "dog ", "turtle "])
# output ['horse ', 'cat ', 'dog ', 'turtle ']

1 commentaires

Votre "sortie" pour la première liste ne semble pas correcte. :-)