使用Python转换JSON中具有相同键的值的数据类型

2024-04-20 07:49:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON文件,里面有很多同名的键,我要做的是使用Python更改同名键的值的数据类型。例如:

{ 'name': 'Tom'
  'nick': 'T'
  'class': '2'
 }
{ 'name': 'Ron'
  'nick': 'R'
  'class': '5'
 }

现在在"class"键中有一个值'2', '5',它是一个字符串。我们能把它们改成整数吗?如果是,怎么办?在

另外,这个问题可能看起来很蠢,因为我对这些东西很陌生,但请你容忍我。在


Tags: 文件字符串namejson整数nickclass数据类型
3条回答

我看不出你字典的其余部分是什么样子,但这里有一个简单的例子。 假设这是您的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'}

^{pr2}$

内景

在JSON结构中,大括号中的两个值是否都有类似于1:和{}的键?那些是钥匙。在

我更喜欢传递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'}]

也许杀伤力太强了,但如果你用熊猫,它会自动为你做到:

import pandas as pd

jsonstring = '''[{ "name": "Tom","nick": "T","class": "2"},
{ "name": "Ron","nick": "R","class": "5"}]'''

pd.read_json(jsonstring).to_dict('r')

退货:

^{pr2}$

相关问题 更多 >