我有一个JSON文件,其中包含许多具有相同名称的键,我想要做的是使用Python更改具有相同名称的键的值的数据类型。例如: -
{ 'name': 'Tom'
'nick': 'T'
'class': '2'
}
{ 'name': 'Ron'
'nick': 'R'
'class': '5'
}
现在,在"class"
键中,值为'2', '5'
,这是一个字符串。我们可以将它们改为整数吗?如果是这样的话?
P.s - 问题可能看起来很愚蠢,因为我对这些事情很陌生,但请耐心等待。
答案 0 :(得分:0)
我看不出你的字典的其余部分是什么,但这是一个简单的例子。 假设这是你的JSON词典:
dic={1:{'name': 'Tom','nick': 'T','class': '2'},
2:{'name': 'Ron','nick': 'R','class': '5'}}
dic[1]['class']=int(dic[1]['class'])
dic[2]['class']=int(dic[2]['class'])
dic
{1:{'class':2,'name':'Tom','nick':'T'},
2:{'class':5,'name':'Ron','nick':'R'}}
type(dic[1]['class'])
INT
在JSON结构中,花括号内的两个值中的每一个都有类似于1:
和2:
的键吗?这些是关键。
答案 1 :(得分:0)
我更喜欢传递object_hook来自定义字段修改:
my_json_str = """[
{ "name": "Tom",
"nick": "T",
"class": "2"
},
{ "name": "Ron",
"nick": "R",
"class": "5"
}
]
"""
def convert_class_to_int(my_dict):
my_dict['class'] = int(my_dict['class'])
return my_dict
import json
result = json.loads(my_json_str, object_hook=convert_class_to_int)
print(result)
# [{'class': 2, 'nick': 'T', 'name': 'Tom'}, {'class': 5, 'nick': 'R', 'name': 'Ron'}]
答案 2 :(得分:0)
也许太过分了,但如果你使用熊猫,它会自动为你做这件事:
import pandas as pd
jsonstring = '''[{ "name": "Tom","nick": "T","class": "2"},
{ "name": "Ron","nick": "R","class": "5"}]'''
pd.read_json(jsonstring).to_dict('r')
返回:
[{'class': 2, 'name': 'Tom', 'nick': 'T'},
{'class': 5, 'name': 'Ron', 'nick': 'R'}]