2016-10-09 4 views
2

ein Wörterbuch von Bigrams haben, erhalten durch eine csv Import und es in ein Wörterbuch verwandeln:entfernen

bigram_dict = {"('key1', 'key2')": 'meaning', "('key22', 'key13')": 'mean2'} 

I Tasten Wörterbuch wollen ohne Anführungszeichen sein, das heißt:

desired_bigram_dict={('key1', 'key2'): 'meaning', ('key22', 'key13'): 'mean2'} 

Würden Sie mir bitte vorschlagen, wie Sie das tun?

+0

Sie müssen die Zeichenfolge als ein Tupel analysieren. – Carcigenicate

+0

Related post http://stackoverflow.com/questions/1894269/convert-string-representation-of-list-to-list-in-python –

Antwort

6

Dies kann mit einem Wörterbuch Verständnis, wo Sie literal_eval auf der Taste rufen:

from ast import literal_eval 
bigram_dict = {"('key1', 'key2')": 'meaning', "('key22', 'key13')": 'mean2'} 

res = {literal_eval(k): v for k,v in bigram_dict.items()} 

Ergebnis:

{('key22', 'key13'): 'mean2', ('key1', 'key2'): 'meaning'} 
3

Sie können literal_eval jede Taste und neu zuzuweisen:

from ast import literal_eval 

bigram_dict = {"('key1', 'key2')": 'meaning', "('key22', 'key13')": 'mean2'} 


for k,v in bigram_dict.items(): 
    bigram_dict[literal_eval(k)] = v 

Oder eine neue dict zu erstellen, verwenden Sie einfach die gleiche Logik mit einem dict Verständnis:

{literal_eval(k):v for k,v in bigram_dict.items()} 

Beide geben Ihnen:

{('key1', 'key2'): 'meaning', ('key22', 'key13'): 'mean2'}