繁体   English   中英

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

[英]how do i sort the list using all digits not just first digit in python?

已排序(用户,键= attrgetter('user_id'),反向= 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)

将字符串转换为int并对其进行排序将帮助您使用所有数字进行排序。

for line in sys.stdin:
    data = line.strip().split('\t')
    users.append(User(data[0],int(data[-1])))

如果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])))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM