J'ai un dict python que j'essaie de déterminer la fréquence à laquelle une valeur est répertoriée.

Je ne peux pas importer de classes supplémentaires, je dois donc l'écrire à partir de zéro. J'ai donc un dict () de

1: Dog, 2: Cat, 3: Dog, 4: Elephant

Et je veux retourner quelque chose comme: -

2: Dog, 1: Cat, 1:Elephant

C'est ce que j'ai jusqu'à présent, mais je ne peux pas trouver comment faire fonctionner un décompte. Je continue

0: Dog, 0: Cat, 0: Elephant

C'est ce que j'ai jusqu'à présent, quelqu'un pourrait-il me dire où je me trompe?

C'est évidemment quelque chose à voir avec ma déclaration de comptage (c'est juste quelque chose que j'ai trouvé en ligne mais cela ne fonctionne clairement pas.

Je crée un dict vide et y ajoute des valeurs (animaux) avec une clé correspondante. Je dois ensuite parcourir toutes les valeurs de toutes les touches pour renvoyer la fréquence.

L'entrée est un objet dict () qui contient les valeurs répertoriées de 1: chien, 2: chat, 3: chien, 4: éléphant

def frequency(self):  

    result = set()
    for i in self.items:
        result.add((self.count(i), self.items[i]))
    return sorted(result)
-1
Bob24 17 mars 2019 à 16:12

2 réponses

Meilleure réponse

Supposons que votre dictionnaire soit nommé d et que vous souhaitiez un décompte des valeurs:

from collections import Counter
d = {1: "dog", 2: "cat", 3: "dog", 4: "elephant"}
counts = Counter(d.values())

Vous pouvez maintenant utiliser le compteur counts:

counts['dog'] # 2
counts['elephant'] # 1
counts['fish'] # 0

Si vous devez utiliser du code et des classes personnalisés pour cela au lieu de la bibliothèque standard, je pense que votre erreur est ici:

result.add((self.count(i), self.items[i]))

Vous voudrez peut-être:

animal_name = self.items[i] #?
result.add((self.count(animal_name), animal_name))

Sinon, vous voudrez peut-être partager avec nous ce qui se trouve dans self.items ...

0
Reut Sharabani 17 mars 2019 à 13:45
d = {1:"Dog",2:"Cat", 3:"Dog", 4:"Elephant"}
count = {}
for v in d.values():
    if(not(v in count)):
        count[v] = 0
    count[v] += 1
print(count)

{'Chien': 2, 'Chat': 1, 'Éléphant': 1}

0
BMW 17 mars 2019 à 13:51