dict und list problem

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
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Hallo,
Wie koennte man aus der Liste (keys) automatisch den passenden key heraus finden der zu dem anfangs String (value) passt?

Code: Alles auswählen

>>> d = {}
>>> keys = ['Ju', 'E', 'Ag', 'Sk', 'M1', 'M2', 'Bn', 'Sr']
>>> value = "EP1-HaI-EAS406"
>>> d['E'] = 'EP1-HaI-EAS406'
>>> d
{'E': 'EP1-HaI-EAS406'}
Vielen Dank im Voraus.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

So?:

Code: Alles auswählen

In [11]: d[[key for key in keys if value.startswith(key)][0]] = value

In [12]: d
Out[12]: {'E': 'EP1-HaI-EAS406'}
Oder auch so:

Code: Alles auswählen

In [17]: d[filter(lambda k: value.startswith(k), keys)[0]] = value

In [18]: d
Out[18]: {'E': 'EP1-HaI-EAS406'}
Zuletzt geändert von Hyperion am Montag 21. Februar 2011, 15:56, insgesamt 1-mal geändert.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Was verstehst du unter "passt"? - Ist es das, was du willst:

Code: Alles auswählen

>>> keys = ['Ju', 'E', 'Ag', 'Sk', 'M1', 'M2', 'Bn', 'Sr']
>>> value = "EP1-HaI-EAS406"
>>> d = {}
>>> for key in keys:
...     if value.startswith(key):
...         d[key] = value
...         break
... 
>>> d
{'E': 'EP1-HaI-EAS406'}
Antworten