Rog*_*Liu 3 python sorting list
大家好,我需要你的python列表排序帮助.
这是事情:
我有两个列表:一个是整数列表,另一个是对象列表,第二个对象列表的属性id也是一个整数,我想根据id属性对对象列表进行排序,在第一个列表中出现了相同id的顺序,这是一个例子:
我得了= [1,2,3,4,5]
和b = [o,p,q,r,s],其中o.id = 2,p.id = 1,q.id = 3,r.id = 5,s.id = 4
并且我希望我的列表b按照其ID出现在列表a中的顺序排序,如下所示:sorted_b = [p,o,q,s,r]
当然,我可以通过使用嵌套循环来实现这一点:
sorted_b = []
for i in a:
for j in b:
if j.id == i:
sorted_b.append(j)
break
Run Code Online (Sandbox Code Playgroud)
但这是解决问题的经典丑陋和非蟒蛇方式,我想知道是否有一种方法可以用一种相当简洁的方式解决这个问题,比如使用排序方法,但我不知道怎么做.我搜索了我的问题,但找不到确切的答案,所以我需要你的帮助,谢谢:)
>>> from collections import namedtuple
>>> Foo = namedtuple('Foo', 'name id') # this represents your class with id attribute
>>> a = [1,2,3,4,5]
>>> b = [Foo(name='o', id=2), Foo(name='p', id=1), Foo(name='q', id=3), Foo(name='r', id=5), Foo(name='s', id=4)]
>>> sorted(b, key=lambda x: a.index(x.id))
[Foo(name='p', id=1), Foo(name='o', id=2), Foo(name='q', id=3), Foo(name='s', id=4), Foo(name='r', id=5)]
Run Code Online (Sandbox Code Playgroud)