python - defaultdict无法识别python中的2位数字

标签 python

我的代码应该输出游戏的分数,并根据每个玩家的名字和每个玩家的最高分数按字母顺序对它们进行排序,仅从该玩家的最后 3 个分数中获取分数。

直到得分达到 10 分(这是您在游戏中可以获得的最高得分)为止,它都可以正常工作。我认为这与分数是两位数而不是一位数有关。

 def alpha():
    d = collections.defaultdict(lambda: collections.deque(maxlen=3))
    with open("scores.txt" as f:
        for line in f:
            player,score = line.strip().split(":")
            d[player].append(score)
        for k in sorted(d):
            values = max(d[k])
            print(k + " " + " ".join(map(str, values)))

有谁知道是什么原因造成的吗? 我使用的是 python 3.3.2。

这是我的文本文件:

Aaron:1
Ronnie:10
Ronnie:2
Ronnie:4
Aaron:5
Vick:6
Vick:9
Vick:2
Andy:5

最佳答案

您存储的是字符串分数而不是整数分数,因此,它们将作为字符串进行比较。由于字符串比较是按字典顺序进行的,"10" < "9"True "10" < "2" 也是如此依此类推,因此您的代码在 2 位数字上失败,因为比较不正确。

要纠正此问题,请将分数转换为整数并替换此行

d[player].append(score)

这样:

d[player].append(int(score))

关于python - defaultdict无法识别python中的2位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450567/

相关文章:

python - 为什么使用 selenium 时只能获取首页数据?

python - OpenCV 教程 - 错误 : Unsupported format or combination of formats

python - Spyder 控制台上的停止按钮在 Windows 和 Python 3.7 上不起作用

python - PyCharm。在 "Run/Debug Configuration"窗口中获取项目目录

python - 将 pandas 列值转换为行

python - 在python中获取彼此相交的集合列表的列表

python - Keras 中 n 维函数的导数

Python - Pandas 数据框列交换

python - 当你在 python 中设置字典时会发生什么?

python - 重命名 PySpark Dataframe 中的透视和聚合列