考虑一下这段代码,它的失败是可以理解的:
def testDataTransform():
source = 'data/threads/testFile2.json'
newFile = 'data/threads/testFile1.json'
jX = returnJson(source)
jY = returnJson(newFile)
for dataL1 in jX:
#print dataL1['city']
for dataL2 in jY:
if dataL1['city'] == dataL2['city']:
dataL2.append(dataL1['population'])
print dataL2
# end testDataTransform
def returnJson(source):
#Grab destination file json
try:
with open(source) as jsonFile: # Open and verify file is there
# load JSON object into memory
j = json.load(jsonFile)
return j
except Exception, e:
print e
raise
# end returnJson
testDataTransform()
生成的错误是:AttributeError: 'dict' object has no attribute 'append'
,
我现在明白这是由于尝试在文件 steam 上使用附加,从而错误地附加了我的 JSON。问题是我该如何正确地做到这一点?我想添加人口数据,该数据位于source
文件中。
testFiles 中的 JSON 结构如下所示:
[
{
"city": "New York",
"lat": 20.1234,
"long": 32.09876
},
{
"city": "London",
"lat": 21.1234,
"long": 37.09876
},
{
"city": "New Jersey",
"lat": 10.1234,
"long": 30.09876
}
]
一个有“population”节点,另一个则没有。我想将人口数据从一个文件复制到另一个文件。这是怎么做到的?我想知道将文件流转换为数组是否有帮助,但我该怎么做呢?
谢谢。
最佳答案
错误消息准确地告诉您出了什么问题。就在这一行
dataL2.append(dataL1['population'])
dataL2是一个dict(),而dict()没有名为append的方法
你想要的是
dataL2["population"] = dataL1['population']
基本上,对该文件的 json.load()
调用会返回 dicts() 列表。 JSON 数组映射到 Python 列表,JSON 对象映射到 Python 字典。要向字典添加新键,只需为其设置一个值即可。
关于python - 在 Python 中将 JSON 数据从一个文件附加到另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431084/