ubuntuusers.de

Python Daten aus Liste extrahieren

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

tassilomoedl

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

Hallo Leute,

wie kann ich in Python aus einer Liste, z.B: {'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}

einen bestimmten Datensatz, z.B: 'Alter': 42 extrahieren? Gruss, tassilomoedl

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11249

Wohnort: München

tassilomoedl schrieb:

wie kann ich in Python aus einer Liste, z.B: {'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}

Das ist keine Liste, das sieht nach einem verschachtelten Dictionary aus - dementsprechend kann man da alle nutzen, was letztendlich __getitem__ aufruft - z.B.:

1
2
3
4
5
6
7
>>> data = {'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}
>>> data['Inhaber']['Alter']
42
>>> data.get('Inhaber').get('Alter')
42
>>> data.__getitem__('Inhaber').__getitem__('Alter')
42

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13175

tassilomoedl schrieb:

wie kann ich in Python aus einer Liste, z.B:

Das ist doch gar keine Liste, sondern ein Dictionary, das u.a. auch zwei Listen enthält.

{'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}

einen bestimmten Datensatz, z.B: 'Alter': 42 extrahieren?

Das ist kein Datensatz sondern ein einzelnes Datum. Es hängt halt davon ab, was die möglichen Inhalte des Dictionaries und die Kriterien sind. Du kannst natürlich über den Schlüssel "Inhaber" und "Alter" gehen und hast dann Deine 42.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
dic = {   'Deckung': 2000000.0,
    'Herausgeber': 'Xema',
    'Inhaber': {   'Alter': 42,
                   'Hobbys': ['Reiten', 'Golfen', 'Lesen'],
                   'Kinder': [],
                   'Name': 'Mustermann',
                   'Partner': None,
                   'Vorname': 'Max',
                   'maennlich': True},
    'Nummer': '1234-5678-9012-3456',
    'Waehrung': 'EURO'}

print(dic['Inhaber']['Alter'])

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

Danke!

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

wenn dir das mit Dict vs. List noch nicht klar ist solltest du dringend nochmal das Tutorial auf docs.python.org durcharbeiten. Das sind absolute Grundlage, die du immer und immer wieder brauchst. Ohne Verständnis von Dicts und Listen wirst du Python nicht wirklich nutzen können.

Gruß, noisefloor

tassilomoedl

(Themenstarter)

Anmeldungsdatum:
27. Juli 2022

Beiträge: 77

noisefloor schrieb:

Hallo,

wenn dir das mit Dict vs. List noch nicht klar ist solltest du dringend nochmal das Tutorial auf docs.python.org durcharbeiten. Das sind absolute Grundlage, die du immer und immer wieder brauchst. Ohne Verständnis von Dicts und Listen wirst du Python nicht wirklich nutzen können.

Gruß, noisefloor

OK! Ich lerne gerade Python, deswegen habe ich das noch nicht gewusst.

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

seahawk1986 schrieb:

tassilomoedl schrieb:

wie kann ich in Python aus einer Liste, z.B: {'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}

Das ist keine Liste, das sieht nach einem verschachtelten Dictionary aus - dementsprechend kann man da alle nutzen, was letztendlich __getitem__ aufruft - z.B.:

1
2
3
4
5
6
7
>>> data = {'Herausgeber': 'Xema', 'Nummer': '1234-5678-9012-3456', 'Deckung': 2000000.0, 'Waehrung': 'EURO', 'Inhaber': {'Name': 'Mustermann', 'Vorname': 'Max', 'maennlich': True, 'Hobbys': ['Reiten', 'Golfen', 'Lesen'], 'Alter': 42, 'Kinder': [], 'Partner': None}}
>>> data['Inhaber']['Alter']
42
>>> data.get('Inhaber').get('Alter')
42
>>> data.__getitem__('Inhaber').__getitem__('Alter')
42

Nicht alles was man kann, sollte man auch tun. Die eckigen Klammern sind bekanntlich der gängige Weg. Ein doppeltes get() ohne Prüfen der Rückgabe macht IMHO wenig Sinn. Warum sollte man sich als Anfänger mit den Problemen eines möglichen None (und entsprechend verwirrender Fehlermeldung) herum schlagen? Und die Dunder-Methoden ruft man nur innerhalb von geerbten Klassen auf, wenn man diese überschreiben möchte.

Mir ist übrigens bewusst, dass DU das alles durchaus weißt. Aber komplett unreflektiert einen blutigen Anfänger vor diese Entscheidung zu stellen, finde ich in einem Forum ehrlich gesagt nicht so angebracht...

Antworten |