0
votes

Initialiser un dictionnaire avec des zéros

J'essaie de suivre des éléments vus, d'un grand tableau, en utilisant un dict. Existe-t-il un moyen de forcer un objet de dictionnaire d'être entier et de se mettre à zéro par défaut lors de l'initialisation?

Je l'ai fait avec des codes très maladroits et deux boucles.

Voici ce que je fais maintenant: xxx


2 commentaires

"forcer un dictionnaire ... défini sur zéro par défaut lors de l'initialisation" - defaultDict


Il y a vu = dict.fromkeys (fl, 0) pour remplacer la première boucle, mais les réponses actuelles fournissent de meilleures solutions pour remplacer les deux boucles en même temps.


3 Réponses :


1
votes

Bien sûr, il suffit d'utiliser Collections.DefaultDict ([ default_factory [ ...]]]]) code> : xxx pré>

De plus, si vous n'aimez pas importer collections code> vous pouvez Utilisez dict.get (touche [ défaut]) code> p> xxx pré>

aussi, si vous voulez seulement résoudre le problème et que vous ne vous dérangerez pas d'utiliser exactement em> dictionnaires que vous pouvez utiliser collection.Counter ([itérable-ou-mapping]) : P>

from collections import Counter

fl = [0, 1, 1, 2, 1, 3, 4]

seenit = Counter(f)

print(seenit)
# Output
Counter({1: 3, 0: 1, 2: 1, 3: 1, 4: 1})

print(dict(seenit))
# Output
{0: 1, 1: 3, 2: 1, 3: 1, 4: 1}


2 commentaires

Merci. Ce débutant apprécie toute l'aide. J'aime la solution par défaut et ira avec cela.


@giggleusa Si vous trouvez cela ou une autre réponse utile, vous devez envisager d'accepter la réponse en tant que correcte (appuyer sur la marque GREY sous le bouton Downvote). Vous recevrez 2 réputation d'accepter un. Sinon, votre question restera sans réponse .



3
votes

Vous pouvez utiliser collections.Counter : xxx

sortie: xxx

Vous pouvez ensuite l'adresser Comme un dictionnaire: xxx


0 commentaires

1
votes

Utilisation de Val dans vu est un peu plus rapide que .get () : xxx

pour les plus grandes listes, compteur finira éventuellement surperformer toutes les autres approches. et defaultDict va être plus rapide que d'utiliser .get () ou val connecté . >


0 commentaires