Créer ou ajouter à une liste dans un dictionnaire - cela peut-il être raccourcie?
Peut ce code Python être raccourcie et toujours être lisible à l'aide de itertools et de jeux?
result = {}
for widget_type, app in widgets:
if widget_type not in result:
result[widget_type] = []
result[widget_type].append(app)
Je peux penser de cela seulement:
widget_types = zip(*widgets)[0]
dict([k, [v for w, v in widgets if w == k]) for k in set(widget_types)])
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
defaultdict(list)
.Une alternative à
defaultdict
est d'utiliser lesetdefault
méthode de dictionnaires standard:Cela repose sur le fait que les listes sont mutables, donc ce qui est retourné à partir de setdefault est la même liste que celle dans le dictionnaire, donc vous pouvez y ajouter.
peut être un peu lent mais fonctionne