string nach dictionary

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
Flavio

Sonntag 21. März 2004, 16:15

hilfe!!
ich habe einen string wie folgt:
'{'violett': ['purple'], 'blau': ['blue'], 'Haus': ['home', 'house'], 'Hand': ['hand']}'
sieht zwar aus wie ein dictionary, ist aber (leider) keiner
wie kann ich ihn in einen dictionary umwandeln???
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Sonntag 21. März 2004, 16:53

Hi. Ganz einfach mit eval zum Interpreter schicken und schauen, was der davon meint :wink:

Code: Alles auswählen

d=eval("{'violett': ['purple'], 'blau': ['blue'], 'Haus': ['home', 'house'], 'Hand': ['hand']}")
Milan
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Sonntag 21. März 2004, 17:28

oder mit regular expressions, falls Du kein eval verwenden willst.

Code: Alles auswählen

import re

s = "{'violett': ['purple'], 'blau': ['blue'], 'Haus': ['home', 'house'], 'Hand': ['hand']}"

d = dict([(y[0][0],[z.strip().strip("'") for z in y[0][1].split(",")]) for y in [re.findall("'(.*?)'\s*:\s*\[(.*?)\]", x) for x in re.findall("('.*?':\s*\[.*?\])",s)]])
Gruß

Dookie
Sneaker
User
Beiträge: 52
Registriert: Montag 19. Januar 2004, 22:19
Wohnort: Vor meinem Computer
Kontaktdaten:

Dienstag 23. März 2004, 21:57

ich würde mal auf das eval tippen da hier ja einfach nur der code im interpreter interpretiert werden muss....
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 23. März 2004, 23:11

Was spricht gegen testen, einfach in einer schleiffe 1000 mal das teil durchlaufen lassen und schaun was schneller ist.
Gibt ja sogar ein Pythonmodul für solche Tests.


Gruß

Dookie
Antworten