V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
huangmiao233
V2EX  ›  Python

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

  •  
  •   huangmiao233 · 2018-09-13 02:46:59 +08:00 via Android · 2194 次点击
    这是一个创建于 2245 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我有一个列表。里头存的是对象,如何对这个列表的对象属性按照我指定的列表进行排序

    list1=[object1, object2,object3]

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

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

    那么如何得到 list1= [object3,object1,object2]呢?
    项目中大约这个列表长度大概 300 个对象。新手上路,多多指教。环境是 python3.7
    6 条回复    2018-09-13 11:13:58 +08:00
    Sylv
        1
    Sylv  
       2018-09-13 03:21:37 +08:00 via iPhone
    list1.sort(key=lamba x: list2.index(x.name))
    xxx749
        2
    xxx749  
       2018-09-13 08:31:29 +08:00 via Android
    食谱第一章
    lraining
        3
    lraining  
       2018-09-13 09:29:59 +08:00 via Android
    @xxx749 食谱是什么?哪本书吗?
    huangmiao233
        4
    huangmiao233  
    OP
       2018-09-13 09:31:30 +08:00 via Android
    @Sylv 感谢大佬啊。😃
    xxx749
        5
    xxx749  
       2018-09-13 10:24:10 +08:00 via Android
    @lraining python cookbook
    xpresslink
        6
    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]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3454 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:45 · PVG 18:45 · LAX 02:45 · JFK 05:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.