2017-05-26 2 views
0

Ich möchte die Schlüssel des folgenden Wörterbuchs, die Zeichenfolgen von Ints sind, zu Ints konvertieren, sobald das Wörterbuch JSON deserialisiert ist. Ich habe versucht, die json.loads Option parse_int zu spezifizieren, aber das hat nicht funktioniert.Konvertieren von Schlüsseln des JSON-Wörterbuchs, die Zeichenfolgen von Ints zu Ints sind

>>> d = {'1' : 2, '2':3, "a" : 3} 
>>> json.loads(json.dumps(d), parse_int = int) 
{'2': 3, 'a': 3, '1': 2} 

Die gewünschte Ausgabe ist {1: 2, 2: 3, 'a': 3}

+0

Schleife durch das Objekt mit für ... in und um ein neues Objekt erstellen. Verwenden Sie parseInt() für die Schlüssel und verwenden Sie die zurückgegebenen Werte als Schlüssel im neuen Objekt. – divinemaniac

+0

Der Grund, dass 'parse_int' nicht für Sie funktioniert, ist, dass diese Schlüssel tatsächlich Zeichenfolgen sind. 'parse_int' wird verwendet, um JSON-Ganzzahlen zu analysieren, nicht JSON-Zeichenfolgen, die wie Ganzzahlen aussehen. –

Antwort

1

Wie wäre es damit:

import json 
d = {'1' : 2, '2':3, "a" : 3} 
j = json.loads(json.dumps(d)) 
output_dict = {} 
for k, v in j.items(): 
    try: 
     output_dict[int(k)] = v 
    except ValueError: 
     output_dict[k] = v 

print output_dict 

Ergebnis: {u'a': 3, 1: 2, 2: 3}

+0

Es ist nicht notwendig, 'parse_int' in Ihrer Lösung zu verwenden. –

+0

_____fixed_____ – JacobIRR