2010-08-26 5 views
0

En Python, la liste dict originale est la suivante:En Python, comment ajouter des éléments distincts à une liste de dicts d'une autre dict?

orig = [{'team': 'team1', 'other': 'blah', 'abbrev': 't1'}, 
     {'team': 'team2', 'other': 'blah', 'abbrev': 't2'}, 
     {'team': 'team3', 'other': 'blah', 'abbrev': 't3'}, 
     {'team': 'team1', 'other': 'blah', 'abbrev': 't1'}, 
     {'team': 'team3', 'other': 'blah', 'abbrev': 't3'}] 

besoin d'obtenir une nouvelle liste dict de l'équipe juste et abbrev mais des équipes distinctes dans une liste comme ceci:

new = [{'team': 'team1', 'abbrev': 't1'}, 
     {'team': 'team2', 'abbrev': 't2'}, 
     {'team': 'team3', 'abbrev': 't3'}] 

Répondre

4

dict clés sont uniques, que vous pouvez exploiter:

teamdict = dict([(data['team'], data) for data in t]) 
new = [{'team': team, 'abbrev': data['abbrev']} for (team, data) in teamdict.items()] 

ne peut pas aider à penser qu'un dict pourrait être votre structure de données de choix pour commencer. Oh, je ne sais pas comment dict() réagit au fait qu'il y a plusieurs clés identiques dans la liste. Vous pourriez avoir à construire le dictionnaire moins Pythonesque dans ce cas:

teamdict={} 
for data in t: 
    teamdict[data['team']] = data 

entrées doubles implicitement prépondérants

+0

+1. D'ailleurs, la première ligne donne une erreur de syntaxe. Vous pourriez vouloir perdre ce dernier ']'. –

+0

thx. mais ne devrais-je pas en ajouter un autre, plutôt? ou puis-je mettre la liste de compréhension directement là sans autres crochets? – Nicolas78

+0

Cela le fait, mais je pense qu'il y a une erreur dans le code teamdict. Devrait être: teamdict = dict ([(données ['équipe'], données) pour les données en orig]) Merci. – simi

Questions connexes