首页 > 解决方案 > 列表总是显示相同的结果 Python

问题描述

我的代码需要帮助,对于这个简单的问题,我很抱歉,因为我对 python 非常陌生,尤其是在列出时。所以我想要我的结果是这两个名字会在排行榜列表中。(将来文本文件中会有更多名称)
所以任何人都可以帮我在列表中显示不同的名称,谢谢。

scoring = {"Name": "", "WinStreak": 0}
leaderboard = []
count = 0
tester = 0

with open("testing2.txt", "r") as fileText:
    for line in fileText:
        scoring["Name"] = line.split()[0]
        winning = int(line.split()[2])
        scoring["WinStreak"] = winning
        leaderboard.append(scoring)


for display in leaderboard:
    print(display["Name"], "-", display["WinStreak"])

测试2.txt

John , 2
Michael , 3

实际结果

Michael - 3
Michael - 3

预期产出

John - 2
Michael - 3

标签: pythonlistdictionary

解决方案


您正在更改循环之前创建的同一个字典。这就是为什么你最终得到引用同一对象的多个字典列表的原因。

请尝试:

with open("testing2.txt", "r") as fileText:
    for line in fileText:
        name = line.split()[0]
        winning = int(line.split()[2])
        leaderboard.append({"Name": name, "WinStreak": winning})

推荐阅读