Seite 1 von 1

string nach dictionary

Verfasst: Sonntag 21. März 2004, 16:15
von Flavio
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???

Verfasst: Sonntag 21. März 2004, 16:53
von Milan
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

Verfasst: Sonntag 21. März 2004, 17:28
von Dookie
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

Verfasst: Dienstag 23. März 2004, 21:14
von Gast
Was ist schneller?

Verfasst: Dienstag 23. März 2004, 21:57
von Sneaker
ich würde mal auf das eval tippen da hier ja einfach nur der code im interpreter interpretiert werden muss....

Verfasst: Dienstag 23. März 2004, 23:11
von Dookie
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