Python: list () comme valeur par défaut pour le dictionnaire
J'ai le code Python qui ressemble à:
if key in dict:
dict[key].append(some_value)
else:
dict[key] = [some_value]
mais je l'ai trouver il devrait y avoir une méthode pour contourner cette déclaration "if". J'ai essayé
dict.setdefault(key, [])
dict[key].append(some_value)
et
dict[key] = dict.get(key, []).append(some_value)
mais à la fois se plaindre du "TypeError: unhashable type: 'liste'". Toutes les recommandations? Merci!
source d'informationauteur Fysx
Vous devez vous connecter pour publier un commentaire.
La meilleure méthode est d'utiliser
collections.defaultdict
avec unlist
par défaut:Alors utilisez simplement:
et le dictionnaire va créer une nouvelle liste pour vous si la clé n'est pas encore dans la cartographie.
collections.defaultdict
est une sous-classe dedict
et sinon se comporte comme un normaldict
objet.Lors de l'utilisation d'un standard
dict
dict.setdefault()
définit correctementdct[key]
pour vous par défaut, de sorte que version devrait avoir a très bien fonctionné. Vous pouvez la chaîne que l'appel avec.append()
:Cependant, en utilisant
dct[key] = dct.get(...).append()
vous remplacer la valeur dedct[key]
avec la sortie de.append()
qui estNone
.