python中列表和字典排序

来源:互联网 发布:穿越火线交易软件 编辑:程序博客网 时间:2024/05/16 17:14

Python 列表内置 list.sort() 方法实现原地排序,同时 Python 还提供 sorted() 函数返回对可迭代对象排序后的新列表。

首先导入可能需要的模块:

# coding:utf-8import operatorimport collections
数据和排序,列表中存储的是字典:
data_list = []data_list.append({'id':'1','name':'zhangsan','age':'22'})data_list.append({'id':'2','name':'wangwu','age':'23'})data_list.append({'id':'7','name':'张三','age':'22'})data_list.append({'id':'4','name':'李四','age':'21'})data_list.append({'id':'3','name':'肖战','age':'23'})data_list.append({'id':'5','name':'无视','age':'21'})data_list.append({'id':'6','name':'排查','age':'23'})'''先按照id排序,再按照age排序'''data_list.sort(key=lambda obj:(obj.get('id'),obj.get('age')), reverse=False)for s in data_list:    print(s)
列表中存储的是元组:
L = [('b', 6), ('a', 1), ('c', 3), ('d', 4)]L.sort(key=lambda x:x[1])print(L)
多关键字排序:
L.sort(key=lambda x: (x[1], x[0]))print(L)
使用sorted()排序:
aa=sorted(L,key=lambda x: (x[1], x[0]))print(aa)
使用operator排序:
L.sort(key=operator.itemgetter(1, 0))print(L)
列表中存储的是对象的时候的排序:
class Student(object):    def __init__(self,id,name,age):        self.id=id        self.name=name        self.age=agelist=[]s1=Student(1,'zhangsan',23)s2=Student(2,'wangwu',32)s3=Student(3,'lisi',21)s4=Student(3,'lisi',20)list.append(s1)list.append(s2)list.append(s3)list.append(s4)list.sort(key=operator.attrgetter('id','age'))for ssss in list:    print('id:  '+str(ssss.id)+'  name:  '+ssss.name+"  age:  "+str(ssss.age))

字典排序,按照值排序注意值得类型。

dict2={'id':'1','name':'zhangsan','age':'23'}'''按键排序:sorted(dict2.items(), key=lambda e:e[0], reverse=True)   按键排序:sorted(dict2.items(), key=lambda e:e[1], reverse=True)'''sorted(dict2.items(), key=lambda e:e[1], reverse=True)print(dict2)

原创粉丝点击