Python 3无法正确追加到列表

时间:2018-10-01 20:00:32

标签: python python-3.6

我有一个函数,用于分析制表符分隔的文本文件。解析只是获取每一列,并将其分配到字典中。代码如下:

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循环中发生的更改?否则,我不知道为什么这不起作用

0 个答案:

没有答案