考虑这段代码,这是可以理解的失败:
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'
,
我现在理解的是由于尝试在文件上使用append并因此错误地附加了我的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
}
]
一个有“人口”节点,另一个没有。我想将该人口数据从一个文件复制到另一个文件。怎么做的?我想知道将文件流转换为数组会有所帮助,但我怎么做呢?
感谢。
答案 0 :(得分:1)
错误消息告诉您究竟出了什么问题。它在这一行
dataL2.append(dataL1['population'])
dataL2是一个dict(),而dict()没有一个名为append的方法
你想要的是
dataL2["population"] = dataL1['population']
基本上,对此文件的json.load()
调用会返回dicts()列表。 JSON数组映射到Python列表,JSON对象映射到Python字典。要向dict添加新密钥,只需在其上设置一个值即可。