一尘不染

在字典中将字符串键转换为int

json

我的问题与这一问题非常相似,除了我有一个列表字典,而且我有兴趣将键值和每个列表形式中的所有元素都更改stringint

因此,例如,我想要字典:

{ '1':['1', '2', '3', '4'] , '2':['1', '4'] , '3':['43','176'] }

成为:

{ 1:[1, 2, 3, 4] , 2:[1, 4] , 3:[43,176] }

这可能吗?

由于我是从JSON格式文件创建此字典的,因此更一般

{"0": ["1", "2", "3", "4"], "1": ["0", "2", "3", "4", "27", "94",
"95", "97", "128", "217", "218", "317"], "2": ["0", "1", "3", "4",
"94", "95"], "3": ["0", "1", "2", "4", "377"], "4": ["0", "1", "2",
"3", "27", "28"], "5": ["6", "7", "8"], "6": ["5", "7", "8"], "7":
["5", "6", "8", "14", "23", "40", "74", "75", "76", "362", "371",
"372"], "8": ["5", "6", "7", "66"], "9": ["10", "11", "12"], "10":
["9", "11", "12", "56", "130", "131"]}

具有以下说明:

json_data = open("coauthorshipGraph.txt")
coautorshipDictionary = json.load( json_data )
json_data.close()

有没有一种方法可以在加载时直接进行?


阅读 347

收藏
2020-07-27

共1个答案

一尘不染

d = {'1':'145' , '2':'254' , '3':'43'}
d = {int(k):int(v) for k,v in d.items()}
>>> d
{1: 145, 2: 254, 3: 43}

用于值列表

>>> d = { '1':['1', '2', '3', '4'] , '2':['1', '4'] , '3':['43','176'] }
>>> d = {int(k):[int(i) for i in v] for k,v in d.items()}

在您的情况下:

coautorshipDictionary = {int(k):int(v) for k,v in json.load(json_data)}

要么

coautorshipDictionary = {
    int(k):[int(i) for i in v] for k,v in json.load(json_data)}
2020-07-27