Raju
Raju

Reputation: 185

Field replacement in Python

I have below code and output data.

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'}]

I need to change the above data like below (oid should be changed as rec_id), can anyone help me how to do that?

[{'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'}]

Upvotes: 0

Views: 41

Answers (1)

Dipen Dadhaniya
Dipen Dadhaniya

Reputation: 4640

Simply iterate over the list json_ls and for each item (which is a dictionary, lets call it 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'},
]

Upvotes: 1

Related Questions