已排序(users,key = attrgetter('user_id'),reverse = True)[:10]
这一行是基于第一个数字对对象列表进行排序,但我希望在python排序期间考虑所有数字。
#!/usr/bin/python
import sys
from operator import attrgetter
class User:
def __init__(self, x, y):
self.name = x
self.user_id = y
def __repr__(self):
return self.name + ":" + str(self.user_id)
users = []
for line in sys.stdin:
data = line.strip().split('\t')
users.append(User(data[0],data[-1]))
for user in users:
print(user)
print('-----------')
for user in sorted(users, key=attrgetter('user_id'), reverse=True)[:10]:
print(user)
答案 0 :(得分:1)
将字符串转换为int并对它们进行排序可帮助您使用所有数字进行排序。
for line in sys.stdin:
data = line.strip().split('\t')
users.append(User(data[0],int(data[-1])))
答案 1 :(得分:0)
如果user_id是一个整数,你应该通过将它强制转换为int来对待它。这将使排序按预期工作。进行以下更改之一:
class User:
def __init__(self, x, y):
self.name = x
self.user_id = int(y)
def __repr__(self):
return self.name + ":" + str(self.user_id)
或者,
users = []
for line in sys.stdin:
data = line.strip().split('\t')
users.append(User(data[0],int(data[-1])))