Pythonic方法通过对象中包含的dict值(按键)对对象列表进行排序

Chr*_*heD 2 python sorting

我正在寻求以更加pythonic的方式做以下事情的建议.

考虑:

class MyObj(object):
    def __init__(self):
        self.dict_properties = {}
Run Code Online (Sandbox Code Playgroud)

假设我有一个包含多个MyObj实例的列表:

mylist = [<__main__.MyObj object at 0x1005e3b90, ...]
Run Code Online (Sandbox Code Playgroud)

现在我想mylist根据dict_propertiesMyObj中某个键的值进行排序.

工作是什么:

mylist.sort(lambda x,y: cmp(x.dict_properties['mykey'],
                            y.dict_properties['mykey']))
Run Code Online (Sandbox Code Playgroud)

但这几乎感觉不到pythonic.

有更好的方法(也许使用operator.attrgetter)?

Ale*_*lli 9

mylist.sort(key=lambda x: x.dict_properties['mykey'])
Run Code Online (Sandbox Code Playgroud)

更简单,更快捷.你可以伸手operator去拿并尝试写一个attrgetter和一个itemgetter,但是这里看起来很简单lambda(或def).