如何使用python中的所有数字而不仅仅是第一个数字对列表进行排序?

时间:2017-07-12 06:14:12

标签: python sorting

已排序(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)

2 个答案:

答案 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])))