gpt4 book ai didi

python根据另一个列表的顺序根据属性对对象列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:49 25 4
gpt4 key购买 nike

我正在使用 Python 列表排序。

我有两个列表:一个是整数列表,另一个是对象列表,第二个对象列表的属性 id 也是一个整数,我想根据 id 属性对对象列表进行排序,按照相同id出现在第一个列表中的顺序,嗯,这是一个例子:

我得到了 a = [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

但这是解决问题的经典丑陋和非 Python 方法,我想知道是否有一种相当简洁的方法来解决这个问题,比如使用 sort 方法,但我不知道如何。

最佳答案

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

关于python根据另一个列表的顺序根据属性对对象列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15701811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com