排序元组列表出错了

时间:2015-04-09 09:59:27

标签: python

我是python的新手。一直在读很多,现在我想解决问题。我试图在DailyProgrammer(reddit)上解决我能解决的所有问题。

无论如何,我遇到了问题。我试图在第二个值之后对元组列表进行排序。除了一件事,它的工作正常。应该在列表中第一个值的其中一个最后结束。

class UserTime(object):

    def __init__(self, user, time):
        self.user = user
        self.time = time

    def __repr__(self):
        return '{}: {}'.format(self.user,
                                  self.time)
user_time_list = [ 
    UserTime('UserA', '41.04'), 
    UserTime('UserB', '7.06'), 
    UserTime('UserC', '20.63'), 
    UserTime('UserD', '54.28'), 
    UserTime('UserE', '12.59'), 
    UserTime('UserF', '31.17'), 
    UserTime('UserG', '63.047') ]

print(user_time_list)
print
print(sorted(user_time_list, key=lambda user: user.time))

Output:

[UserA: 41.04, UserB: 7.06, UserC: 20.63, UserD: 54.28, UserE: 12.59, UserF: 31.17, UserG: 63.047]

[UserE: 12.59, UserC: 20.63, UserF: 31.17, UserA: 41.04, UserD: 54.28, UserG: 63.047, UserB: 7.06]

我一直在网上尝试各种技术。在谷歌搜索。甚至gettattribute函数。我也尝试过这个解决方案,而不需要创建一个类,只是制作一个简单的元组列表。同样的问题...... UserB最后结束。那是错的,因为他显然是赢家;)

1 个答案:

答案 0 :(得分:0)

您正在排序字符串。这意味着它们按字典顺序排序。 按此顺序,数字后面有.

你想让列表浮点数中的数字得到数字比较:

user_time_list = [ 
    UserTime('UserA', 41.04), 
    UserTime('UserB', 7.06), 
    UserTime('UserC', 20.63), 
    UserTime('UserD', 54.28), 
    UserTime('UserE', 12.59), 
    UserTime('UserF', 31.17), 
    UserTime('UserG', 63.047) ]