首页 > 解决方案 > Python中的字段替换

问题描述

我有以下代码和输出数据。

json_rdd = data.toJSON().collect()
json_ls = [json.loads(x) for x in json_rdd]

[{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e0719'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
{'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e071a'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
{'status': 'Take', 'rec_id': {'oid': '5d9f9f13523b7e0d89'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}, 
{'status': 'Take', 'rec_id': {'oid': '5d9f9f14523b7e0d8a'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}]

我需要像下面这样更改上述数据(oid 应该更改为 rec_id),有人可以帮我怎么做吗?

[{'status': 'Yes', 'rec_id': '5d9f5434523b7e0719', 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
{'status': 'Yes', 'rec_id':  '5d9f5434523b7e071a', 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
{'status': 'Take', 'rec_id': '5d9f9f13523b7e0d89', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}, 
{'status': 'Take', 'rec_id': '5d9f9f14523b7e0d8a', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}]

标签: pythonjson

解决方案


只需遍历列表json_ls并为每个项目(这是一个字典,让我们称之为d), set d['rec_id'] = d['rec_id']['oid']

json_ls = [
    {'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e0719'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
    {'status': 'Yes', 'rec_id': {'oid': '5d9f5434523b7e071a'}, 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
    {'status': 'Take', 'rec_id': {'oid': '5d9f9f13523b7e0d89'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}, 
    {'status': 'Take', 'rec_id': {'oid': '5d9f9f14523b7e0d8a'}, 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
]


for d in json_ls:
    d['rec_id'] = d['rec_id']['oid']


assert json_ls == [
    {'status': 'Yes', 'rec_id': '5d9f5434523b7e0719', 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
    {'status': 'Yes', 'rec_id':  '5d9f5434523b7e071a', 'lot_number': '8be4-400d-a0c7-7214132dfd48'}, 
    {'status': 'Take', 'rec_id': '5d9f9f13523b7e0d89', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'}, 
    {'status': 'Take', 'rec_id': '5d9f9f14523b7e0d8a', 'lot_number': 'db53-4420-887f-0e9bb1364e2e'},
]

推荐阅读