dictionarys innerhalb einer Liste

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Achromatic
User
Beiträge: 3
Registriert: Freitag 5. März 2021, 21:42

Freitag 5. März 2021, 21:54

Ich habe das Problem, dass ich als Ausgabe einer Datenanfrage eines APIs eine Liste bekommen habe die mehrere dictionarys beinhaltelt. Für mich relevant ist allerdings nur ein Value je dictionary.
Gibt es einen einfachen weg diese zu bekommen?

Code: Alles auswählen

[{'id': '1', 'name': 'A', 'url': 'g'},
{'id': '2', 'name': 'B', 'url': 'g'},
{'id': '3', 'name': 'C', 'url': 'g'},
{'id': '4', 'name': 'D', 'url': 'g'},
{'id': '5', 'name': 'E', 'url': 'g'},
{'id': '6', 'name': 'F', 'url': 'g'}]
Ich will also quasi als Ergebnis eine Liste mit A, B, C, D, E, F
Benutzeravatar
sparrow
User
Beiträge: 2706
Registriert: Freitag 17. April 2009, 10:28

Samstag 6. März 2021, 08:19

Mit einer list comprehension.

Code: Alles auswählen

values = [d["name"] for d in response]
Benutzeravatar
__blackjack__
User
Beiträge: 8708
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Samstag 6. März 2021, 10:13

Hier mit Kanonen auf Spatzen geschossen, aber ich bringe die Kanone trotzdem mal ins Spiel:

Code: Alles auswählen

In [2]: data                                                                    
Out[2]: 
[{'id': '1', 'name': 'A', 'url': 'g'},
 {'id': '2', 'name': 'B', 'url': 'g'},
 {'id': '3', 'name': 'C', 'url': 'g'},
 {'id': '4', 'name': 'D', 'url': 'g'},
 {'id': '5', 'name': 'E', 'url': 'g'},
 {'id': '6', 'name': 'F', 'url': 'g'}]

In [3]: import glom as g                                                        

In [4]: g.glom(data, ["name"])                                                  
Out[4]: ['A', 'B', 'C', 'D', 'E', 'F']
long long ago; /* in a galaxy far far away */
Benutzeravatar
DeaD_EyE
User
Beiträge: 617
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Dienstag 9. März 2021, 08:31

Mit der Standardbiliothek:

Code: Alles auswählen

from operator import itemgetter


data = [{'id': '1', 'name': 'A', 'url': 'g'},
{'id': '2', 'name': 'B', 'url': 'g'},
{'id': '3', 'name': 'C', 'url': 'g'},
{'id': '4', 'name': 'D', 'url': 'g'},
{'id': '5', 'name': 'E', 'url': 'g'},
{'id': '6', 'name': 'F', 'url': 'g'}]

data2 = list(map(itemgetter("name"), data))
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
Maxi.py
User
Beiträge: 1
Registriert: Montag 15. Februar 2021, 13:11
Wohnort: Hanau
Kontaktdaten:

Dienstag 9. März 2021, 21:31

Hallo, das ist eigentlich ganz einfach, man muss nur ein bisschen nachdenken:

Code: Alles auswählen

api = [
    {'id': '1', 'name': 'A', 'url': 'g'},
    {'id': '2', 'name': 'B', 'url': 'g'},
    {'id': '3', 'name': 'C', 'url': 'g'},
    {'id': '4', 'name': 'D', 'url': 'g'},
    {'id': '5', 'name': 'E', 'url': 'g'},
    {'id': '6', 'name': 'F', 'url': 'g'}
]

names = [name.get("name") for name in api]
Antworten