如何根据Python中对象的多个值对类实例(对象)列表进行排序

2021-06-14 22:30:40 发布

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

我对Python还不熟悉。我有一个对象列表,每个对象是一个类的实例,每个对象有5个值。我需要根据两个值对列表排序。i、 名字和姓氏。我该怎么做?还是有更好的方法来实现我的目标?你知道吗

还有一种方法可以在排序之后以json格式列出这个列表中的所有对象吗?你知道吗

class Format1():
    def __init__(self, alist):
        self.color = alist[3]
        self.firstname = alist[1]
        self.lastname = alist[0]
        self.phonenumber = alist[2]
        self.zipcode = alist[4] 

obj = Format1(alist)
entries.append(obj)
3条回答
网友
1楼 ·

如果您想使用Kremlan的答案,请将以下内容添加到您的类中:

    def __getitem__(self, option):
        return {"color": self.color,
                "firstname": self.firstname,
                "lastname": self.lastname
                "phonenumber": self.phonenumber
                "zipcode": self.zipcode
        }.get(option.lower(), None)
网友
2楼 ·
sorted = sorted(alist, key=lambda x: (x['firstname'], x['lastname']))
网友
3楼 ·

对于排序,可以使用sorted()函数和key参数-

sortedlist = sorted(alist, key=lambda x: (x.firstname , x.lastname))

另外,如果说json格式,你的意思是-

{'color':'<colorname>', 'firstname','<firstname>' ....}

每一个物体都有这样一本字典。然后您可以创建一个返回对象的__dict__属性的函数,并使用^{}map,如-

def cdict(a):
    return a.__dict__

s = json.dumps(list(map(cdict,<your list>)))
print(s)

相关问题