我有一个来自同一类的实例列表,我想根据类中的属性使我的列表与众不同。实现这一目标的最蟒蛇方式是什么?
这是一些示例代码:
#!/usr/bin/python
#-*- coding:utf-8 -*-
class MyClass(object):
def __init__(self, classId, tag):
self.classId = classId
self.tag = tag
myList = []
myInstance1 = MyClass(1, "ABC")
myInstance2 = MyClass(2, "DEF")
myInstance3 = MyClass(3, "DEF")
myList.append(myInstance1)
myList.append(myInstance3) # note that the order is changed deliberately
myList.append(myInstance2)
如果我现在想根据 MyClass 中的一个属性对列表进行排序,我通常只是按键排序,然后使用 lambda 表达式设置键 - 如下所示:
myList.sort(key=lambda x: x.classId)
for x in myList:
print x.classId
$ python ./test.py
1
2
3
是否可以使用类似的方法(lambda、map 或类似方法)根据“tag”属性使列表与众不同?此外,如果这是可能的,它是否是基于该列表中类的属性使列表与众不同的最“pythonic”方式?
我已经尝试在 SO 和 Google 上搜索有关此问题的主题,但我发现的所有结果都处理仅包含数值而不包含自定义对象的简单列表。