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

时间:2015-04-04 19:28:01

标签: 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

1 个答案:

答案 0 :(得分:2)

您正在存储字符串分数而不是整数分数,因此,它们将被比较为字符串。由于字符串比较是词典,因此"10" < "9"True,因此"10" < "2"等等,因此您的代码因2位数而失败,因为比较不正确。

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

d[player].append(score)

用这个:

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