2017-05-26 17 views
0

辞書がJSON逆シリアル化されると、intの文字列である次の辞書のキーをintに変換します。 json.loadsオプションparse_intを指定しようとしましたが、これは機能しませんでした。intの文字列であるJSON辞書のキーをintに変換する

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

所望の出力は{1: 2, 2: 3, 'a': 3}

+0

ループ...で、新しいオブジェクトを作成します。 キーでparseInt()を使用し、返された値を新しいオブジェクトのキーとして使用します。 – divinemaniac

+0

'parse_int'がうまくいかない理由は、実際には文字列です。 'parse_int'はJSON整数を解析するために使用され、整数のように見えるJSON文字列は解析されません。 –

答えて

1

これはどうです:

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 

結果:のために使用してオブジェクトを介して {u'a': 3, 1: 2, 2: 3}

+0

ソリューションで 'parse_int'を使う必要はありません。 –

+0

_____fixed_____ – JacobIRR

関連する問題