如何把对象的属性按特定列表排列呢?

2018-09-13 02:46:59 +08:00
 helijia21
我有一个列表。里头存的是对象,如何对这个列表的对象属性按照我指定的列表进行排序

list1=[object1, object2,object3]

其中 object1.name ='a', object2.name='b', object3.name='c'

list2 =['c','a','b']

那么如何得到 list1= [object3,object1,object2]呢?
项目中大约这个列表长度大概 300 个对象。新手上路,多多指教。环境是 python3.7
2055 次点击
所在节点    Python
6 条回复
Sylv
2018-09-13 03:21:37 +08:00
list1.sort(key=lamba x: list2.index(x.name))
xxx749
2018-09-13 08:31:29 +08:00
食谱第一章
lraining
2018-09-13 09:29:59 +08:00
@xxx749 食谱是什么?哪本书吗?
helijia21
2018-09-13 09:31:30 +08:00
@Sylv 感谢大佬啊。😃
xxx749
2018-09-13 10:24:10 +08:00
@lraining python cookbook
xpresslink
2018-09-13 11:13:58 +08:00
from operator import attrgetter

class MyObject(object):
□□□□def __init__(self, name): self.name = name
□□□□def __repr__(self): return self.name

list1 = []

for i in range(5):
□□□□list1.append(MyObject('object'+str(i)))

print(sorted(list1, key=attrgetter('name'), reverse=True))

# [object4, object3, object2, object1, object0]

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX