繁体   English   中英

用 Python 中另一个 JSON 文件中的相应值替换 JSON 值

[英]Replace JSON value with corresponding value from another JSON file in Python

我正在尝试用另一个 JSON 文件中的值替换 JSON 值。 例如,我有这个 JSON 文件:

{'data': [{'street': '1'}, {'street': '2'}, {'street': '3'}]}

现在我想用这个 JSON 文件的相应值替换 'street' 值:

{'data': [{'1': 'Example Street 1'}, {'2': 'Example Street 2'}, {'3': 'Example Street 3'}]}

所以结果应该是:

{'data': [{'street': 'Example Street 1'}, {'street': 'Example Street 2'}, {'street': 'Example Street 3'}]}

我正在尝试学习python,所以我不知道如何解决这个问题,而且我在互联网上找不到解决方案。 如果有人知道如何解决这个问题,请帮助我。

我们取 dictA 数据字段(它是一个列表)进行迭代。 对于列表中的每个元素我们取元素的值,因为该元素是一个字典并检查它是否在 dataB 'data' 字段列表元素中,然后我们更改 dataA['street'] 字段

dictA ={'data': [{'street': '1'}, {'street': '2'}, {'street': '3'}]}
dictB = {'data': [{'1': 'Example Street 1'}, {'2': 'Example Street 2'}, {'3': 'Example Street 3'}]}


for elementA in dictA['data']:
  for elementB in dictB['data']:
    if elementA['street'] in elementB:
       elementA['street'] = elementB[elementA['street']]
print(dictA)

使用zip函数,同时迭代两个列表

dictA ={'data': [{'street': '1'}, {'street': '2'}, {'street': '3'}]}
dictB = {'data': [{'1': 'Example Street 1'}, {'2': 'Example Street 2'}, {'3': 'Example Street 3'}]}

for elementA,elementB in zip(dictA['data'], dictB['data']):
    elementA['street'] =elementB[elementA['street']]
print(dictA)

首先,您需要加载第一个 JSON 文件的内容,然后加载第二个 JSON 文件的内容,找到相应的值(在本例中为“street”键),然后转储新的 JSON进入文件。

就我而言, first.json包含{"data": [{"street": "1"}, {"street": "2"}, {"street": "3"}]}second.json包含{"data": [{"1": "Example Street 1"}, {"2": "Example Street 2"}, {"3": "Example Street 3"}]}

我使用以下命令创建了一个具有指定值的新 JSON 文件:

import json

with open('first.json') as first_file:
    first_json = json.load(first_file)
    
with open('second.json') as second_file:
    second_json = json.load(second_file)    

new_data = []

for i in range(len(first_json['data'])):
    for j in range(len(second_json['data'])):
        key_one, value_one = list(first_json['data'][i].items())[0]
        key_two, value_two = list(second_json['data'][j].items())[0]

        if value_one == key_two:
            new_data.append({key_one: value_two})
        
with open('new_file.json', 'w+') as new_file:
    new_data = {'data': new_data}
    json.dump(new_data, new_file)

新的 JSON 文件应包含值

{"data": [{"street": "Example Street 1"}, {"street": "Example Street 2"}, {"street": "Example Street 3"}]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM