"如何根据列表中的类属性使Python列表变得独特?"

2024-09-29 19:34:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个来自同一个类的实例的列表,我想根据类中的属性使我的列表与众不同。什么是最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上搜索关于这个问题的主题,但是我找到的所有结果都是简单的列表,其中只包含一个数值,而不是一个自定义对象。。在


Tags: 方法lambdaself列表属性排序deftag
2条回答

假设要键入的属性是不可变的,则可以使用dict:

d = {}
for x in xs:
    d[x.tag] = x

现在,d将为tag值包含一个x;您可以使用d.values()或{}来获取xs。在

注意。这里最后一个匹配项获胜;要获得第一个匹配项,请反向迭代。在

您可以使用python dict comprehension

{x.tag: x for x in myList}.values()

例如: 在

^{pr2}$

相关问题 更多 >

    热门问题