我有一个函数,用于分析制表符分隔的文本文件。解析只是获取每一列,并将其分配到字典中。代码如下:
def parseRatingsFile():
jsonArray = []
json = {
"userID": "placeholder",
"itemID": "placeholder",
"rating": "placeholder",
"timestamp": "placeholder"
}
with open(filePath, 'r') as file:
data = file.readlines()
data = [x.strip() for x in data]
for row in data:
cols = row.split("\t")
json["userID"] = cols[0]
json["itemID"] = cols[1]
json["rating"] = cols[2]
json["timestamp"] = cols[3]
# print(json)
jsonArray.append(json)
pprint.pprint(jsonArray)
return jsonArray
如果仅在for循环中打印出json
字典,则会得到以下输出(是正确的):
{'userID': '276', 'itemID': '246', 'rating': '4', 'timestamp': '874786686'}
{'userID': '557', 'itemID': '529', 'rating': '5', 'timestamp': '881179455'}
{'userID': '913', 'itemID': '258', 'rating': '4', 'timestamp': '889331049'}
如果我打印出jsonArray
列表,则会得到以下输出:
[{'itemID': '258', 'rating': '4', 'timestamp': '889331049', 'userID': '913'},
{'itemID': '258', 'rating': '4', 'timestamp': '889331049', 'userID': '913'},
{'itemID': '258', 'rating': '4', 'timestamp': '889331049', 'userID': '913'}]
我并不特别在意顺序的变化。奇怪的是,jsonArray
仅具有最后更新的json
字典,并与循环中的迭代次数相同地重复该字典。我正在使用python 3.6.6。
在python中追加是否忽略for循环中发生的更改?否则,我不知道为什么这不起作用