我是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最后结束。那是错的,因为他显然是赢家;)
答案 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) ]