我正在寻求以更加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)?
mylist.sort(key=lambda x: x.dict_properties['mykey'])
Run Code Online (Sandbox Code Playgroud)
更简单,更快捷.你可以伸手operator去拿并尝试写一个attrgetter和一个itemgetter,但是这里看起来很简单lambda(或def).