it-swarm.com.de

Wie finde ich einen Wert in einer Liste von python Wörterbüchern?

Haben Sie eine Liste von python Wörterbüchern im folgenden Format. Wie würden Sie eine Suche durchführen, um einen bestimmten Namen zu finden?

label = [{'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
          'name': 'Test',
          'pos': 6},
             {'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
              'name': 'Name 2',
          'pos': 1}]

Folgendes hat nicht funktioniert:

if 'Test'  in label[name]

'Test' in label.values()
35
bobsr

Sie müssten alle Wörterbücher in Ihrer Liste durchsuchen. benutze any() mit einem Generatorausdruck:

any(d['name'] == 'Test' for d in label)

Dies führt zu einem Kurzschluss. Geben Sie True zurück, wenn die erste Übereinstimmung gefunden wurde, oder False, wenn keines der Wörterbücher übereinstimmt.

57
Martijn Pieters

Sie könnten auch nach:

>>> match = next((l for l in label if l['name'] == 'Test'), None)
>>> print match
{'date': datetime.datetime(2013, 6, 17, 8, 56, 24, 2347),
 'name': 'Test',
 'pos': 6}

Oder möglicherweise klarer:

match = None
for l in label:
    if l['name'] == 'Test':
        match = l
        break
36
Eric