如何在python中编写json时修复重复值
我有两个文件,在读取了这两个文件之后,我将其写入python中的json文件。问题是在最后一个json文件中,我得到了重复的json对象,并附加了最后一个json对象 我能够读取文件并生成json文件如何在python中编写json时修复重复值,python,json,Python,Json,我有两个文件,在读取了这两个文件之后,我将其写入python中的json文件。问题是在最后一个json文件中,我得到了重复的json对象,并附加了最后一个json对象 我能够读取文件并生成json文件 import json data2 = {} data1 = [] i = 1 with open('abc3') as json_file: f=open("abc2", "r") data = json.load(json_file) lines =f.readli
import json
data2 = {}
data1 = []
i = 1
with open('abc3') as json_file:
f=open("abc2", "r")
data = json.load(json_file)
lines =f.readlines()
for p,x in zip(data['Url'],lines):
print(p['Urls'])
print(x)
print(i)
print('')
data2['videoId'] = i
data2['videoUrl'] = p['Urls']
data2['videName'] = x
i = i + 1
data1.extend(data2)
with open('data1.json', 'w') as outfile:
json.dump(data1, outfile)
重用data2的相同引用是主要问题。在每次迭代中创建一个字典 如果执行data1.extenddata2,当您想要创建字典列表时,extend会在字典的键上进行迭代 快速修复:
for p,x in zip(data['Url'],lines):
print(p['Urls'])
print(x)
print(i)
print('')
data2 = {}
data2['videoId'] = i
data2['videoUrl'] = p['Urls']
data2['videName'] = x
i = i + 1
data1.append(data2)
但列表理解会更清晰、更符合python的注释:不要读这些行,直接使用f,这样可以避免无用的文件读取:
data1 = [{"videoId":i,"videoUrl":p['Urls'],'videoName':x.rstrip()}
for i,(p,x) in enumerate(zip(data['Url'],f),1)]
这将在每次迭代中创建一个字典。i从1开始使用enumerate替代副作用。请注意,当逐行读取文件时,删除行尾字符所需的rstrip操作
总而言之,下面是我如何重写完整代码的:
import json
with open('abc3') as json_file:
data = json.load(json_file)
with open("abc2") as f:
data1 = [{"videoId":i,"videoUrl":p['Urls'],'videoName':x.rstrip()}
for i,(p,x) in enumerate(zip(data['Url'],f),1)]
with open('data1.json', 'w') as outfile:
json.dump(data1, outfile)
典型错误:在循环中创建data2={},否则共享相同的引用。当data1.extenddata2:您可能是指data1.appenddata2,或者您只是将键添加到list@Jean-弗朗索瓦·法布,谢谢。。固定的我是python新手。它就在那里。。