2009-10-22 9 views
0

Dites que vous avez une liste de dicts comme ceci {'id': 1, 'other_value':5}Comment obtenir tous les ID uniques de la liste des dicts?

Alors peut-être;

items = [{'id': 1, 'other_value':5}, {'id': 1, 'other_value2':6}, {'id': 2, 'other_value':4}, {'id': 2, 'other_value2':3}] 

Maintenant, vous pouvez supposer qu'il s'agit d'un petit sous-ensemble de données. Il y a peut-être des milliers. Aussi la structure n'est pas spécifiée par moi, c'est donné à moi.

Si je veux juste obtenir les identifiants que je pouvais faire quelque chose comme ceci:

ids = [i[id] for i in items] 

Cependant, vous remarquerez qu'il ya Dupliquons d'id dans les données d'origine. donc la question est; Comment pouvez-vous obtenir les identifiants uniques?

J'espérais quelque chose comme:

ids = [i[id] for i in items if not in LIST] 

mais pour autant que je sache, il n'y a pas moyen d'accéder à la liste dans le générateur.

bien sûr je peux faire une boucle for et le faire facilement de cette façon. J'étais juste curieux de savoir s'il y avait une façon plus concise de le faire.

+0

d0ougal, c'est un question de niveau débutant, personne ne dit que vous êtes. s'il vous plaît ne pas enlever l'étiquette. – SilentGhost

Répondre

7

si vous voulez ids uniques que vous pouvez utiliser un ensemble:

set(i['id'] for i in items) 
+1

vous n'avez pas besoin de créer vous-même la liste intermédiaire. 'set (i ['id'] pour i dans les items)' will do. – nosklo

+0

merci, je l'ai réparé –

1
set(i['id'] for i in items) 

mais vous pourriez envisager une autre structure de données tout à fait, par exemple dict des listes:

items = {1: [5, 6], 2: [2, 4]} 
Questions connexes