在python中导入2个字典列表和嵌套键/值对
我有两个json,它们是字典列表,我想用它们在python中创建第三个json 第一个json是姓氏。json在python中导入2个字典列表和嵌套键/值对,python,json,Python,Json,我有两个json,它们是字典列表,我想用它们在python中创建第三个json 第一个json是姓氏。json [{ "lastnameID": "1", "name": "Doe" }, { "lastnameID": "2", "name": "Smith" }] [{ "firstnameID": "1", "name": "John", "lastnameID": "1" }, { "firstnameID": "2",
[{
"lastnameID": "1",
"name": "Doe"
}, {
"lastnameID": "2",
"name": "Smith"
}]
[{
"firstnameID": "1",
"name": "John",
"lastnameID": "1"
}, {
"firstnameID": "2",
"name": "Jane",
"lastnameID": "1"
}, {
"firstnameID": "3",
"name": "Bob",
"lastnameID": "2"
}, {
"firstnameID": "4",
"name": "Mary",
"lastnameID": "2"
}]
[{
"lastnameID": "1",
"name": "Doe",
"first names": [{
"firstnameID": "1",
"name": "John"
}, {
"firstnameID": "2",
"name": "Jane"
}]
}, {
"lastnameID": "2",
"name": "Smith",
"first names": [{
"firstnameID": "3",
"name": "Bob"
}, {
"firstnameID": "4",
"name": "Mary"
}]
}]
第二个json是名字。json
[{
"lastnameID": "1",
"name": "Doe"
}, {
"lastnameID": "2",
"name": "Smith"
}]
[{
"firstnameID": "1",
"name": "John",
"lastnameID": "1"
}, {
"firstnameID": "2",
"name": "Jane",
"lastnameID": "1"
}, {
"firstnameID": "3",
"name": "Bob",
"lastnameID": "2"
}, {
"firstnameID": "4",
"name": "Mary",
"lastnameID": "2"
}]
[{
"lastnameID": "1",
"name": "Doe",
"first names": [{
"firstnameID": "1",
"name": "John"
}, {
"firstnameID": "2",
"name": "Jane"
}]
}, {
"lastnameID": "2",
"name": "Smith",
"first names": [{
"firstnameID": "3",
"name": "Bob"
}, {
"firstnameID": "4",
"name": "Mary"
}]
}]
我希望我的输出是这个output.json
[{
"lastnameID": "1",
"name": "Doe"
}, {
"lastnameID": "2",
"name": "Smith"
}]
[{
"firstnameID": "1",
"name": "John",
"lastnameID": "1"
}, {
"firstnameID": "2",
"name": "Jane",
"lastnameID": "1"
}, {
"firstnameID": "3",
"name": "Bob",
"lastnameID": "2"
}, {
"firstnameID": "4",
"name": "Mary",
"lastnameID": "2"
}]
[{
"lastnameID": "1",
"name": "Doe",
"first names": [{
"firstnameID": "1",
"name": "John"
}, {
"firstnameID": "2",
"name": "Jane"
}]
}, {
"lastnameID": "2",
"name": "Smith",
"first names": [{
"firstnameID": "3",
"name": "Bob"
}, {
"firstnameID": "4",
"name": "Mary"
}]
}]
如何在python 3上实现这一点
我在下面试过,但肯定有比这更好的方法
import json
finaljson = []
with open('first_names.json', 'r') as f:
firstnames = json.load(f)
with open('last_names.json', 'r') as f:
lastnames = json.load(f)
for i in range (0, len (lastnames)):
firstnamelist = []
lastnameID = lastnames[i]['lastnameID']
lastname = lastnames[i]['name']
for i in range (0, len (firstnames))
if firstnames[i]['lastnameID'] == lastnameID:
firstname = firstnames[i]['name']
firstnameID = firstnames[i]['firstnameID']
firstnamelist.append("firstnameID":firstnameID,"name":firstname)
finaljson.append({"lastnameID":lastnameID,"name":lastname,"firstnames":firstnamelist})
字典中的
for first_ in first:
first_['first names'] = [{x:y for x, y in second_.items() if x == 'firstnameID' or x == 'name'}
for second_ in second if second_['lastnameID'] == first_['lastnameID']]
print (first)
请参见以下结果:
[{'lastnameID': '1', 'name': 'Doe',
'first names': [{'firstnameID': '1', 'name': 'John'},
{'firstnameID': '2', 'name': 'Jane'}]},
{'lastnameID': '2', 'name': 'Smith',
'first names': [{'firstnameID': '3', 'name': 'Bob'},
{'firstnameID': '4', 'name': 'Mary'}]}]
到目前为止,您尝试了什么?将它们分别加载到内存中,然后编写逻辑以将它们组合成您想要的格式。@JoshKarpel我在我的问题中添加了我尝试过的内容。我尝试了,我假设第一个是first_names.json,第二个是last_names.json。我尝试了你的代码,但得到了不同的json结构。@dne202我明白了。我想我改变了第一次和第二次。请在第一个和第二个之间更改数据。它将提供您想要的精确输出。很抱歉,我不能改变自己,因为我在外面。@dne202太好了!如果答案解决了您的问题,请选择答案。请投赞成票