我有一个来自同一个类的实例的列表,我想根据类中的属性使我的列表与众不同。什么是最Python式的方法来实现这一点?在
下面是一些示例代码:
#!/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表达式设置键-如下所示:
^{pr2}$是否可以使用类似的方法(lambda、map或类似方法)根据“tag”属性使列表与众不同?另外,如果这是可能的,那么根据列表中某个类的属性来区分列表是否是最“python”的方法?在
我已经尝试过在SO和Google上搜索关于这个问题的主题,但是我找到的所有结果都是简单的列表,其中只包含一个数值,而不是一个自定义对象。。在
假设要键入的属性是不可变的,则可以使用dict:
现在,}来获取
d
将为tag
值包含一个x
;您可以使用d.values()
或{xs
。在注意。这里最后一个匹配项获胜;要获得第一个匹配项,请反向迭代。在
您可以使用python dict comprehension
例如: 在
^{pr2}$相关问题 更多 >
编程相关推荐