python上复杂的排序,非常小但有趣的bug

2024-04-19 19:41:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用“set”或“a”排序。我试着用下面的信息。在

>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

http://wiki.python.org/moin/HowTo/Sorting/

该函数适用于“count”,但不适用于“sets”、“a”。在

^{pr2}$

我想用下面的那个,但是不行。我用同样的方式介绍网页。在

^{3}$

有趣的是伯爵可以工作,但另一个不行。在

试了几次之后,我决定换一种方式。我可以用这个指令得到同样的结果。在

s=sorted(number_object, key=itemgetter(0), reverse=True )
sorted(s, key=itemgetter(1), reverse=True )

但我很好奇为什么原来的那个不起作用。有没有人擅长python??在


Tags: key信息trueageobjects排序方式john
1条回答
网友
1楼 · 发布于 2024-04-19 19:41:17

如果你按照你给出的链接,你会意识到你必须像这样实例化你的对象:

number_objects = [Number([1, 3, 7], 2, 3),
                  Number([3, 7], 2, 2), 
                  .......
                 ]

然后

^{pr2}$

应该行得通。在

例如:

from operator import attrgetter
class Number:
    def __init__(self, sets, count, a):
        self.sets = sets
        self.count = count
        self.a = a
    def __repr__(self):
        return repr((self.sets, self.count, self.a))


number_objects = [Number([1, 3, 7], 2, 3), Number([3, 7], 2, 2),
                  Number([2, 4], 2, 2), Number([1, 7], 9, 2), 
                  Number([1, 3], 2, 2)]

print sorted(number_objects, key=attrgetter('sets', 'count'))

产生:

[([1, 3], 2, 2), ([1, 3, 7], 2, 3), ([1, 7], 9, 2), ([2, 4], 2, 2), ([3, 7], 2,
2)]

相关问题 更多 >