python - Python 3 未正确附加到列表
问题描述
我有一个解析制表符分隔的文本文件的函数。解析只是获取每一列并将其分配到字典中。代码如下:
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
如果我只打印出json
for 循环中的字典,我会得到这个输出(这是正确的):
{'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。
Does append in python ignore the changes that occur in for loops? Otherwise, I have no clue why this is not working
解决方案
推荐阅读
- xml - SonarQube 需要单独的 xsd 架构文件并显示错误:“错误解析 XSD 文件中的组件”
- vb.net - 自动填充贴纸并打印多个
- clojure - 调用 clojure.core/fn 不符合规范
- wpf - 如何替换 MahApps MetroWindow 的 Maximize/RestoreDown 图标
- r - 在R中之前和之后的非NA值之间通过公式的结果填写NA
- wordpress - 使用 apache 在 laravel 中安装 Wordpress 永久链接问题
- c++ - 在 Atom 编辑器中更改默认路径
- html - CSS 使整个 HTML 正文消失
- python - 散景:如何为 CheckboxButtonGroup 中的活动按钮构建处理程序?
- python - 有没有办法可以将直方图与该图中的函数图对齐?