python中列表和字典排序

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

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

# coding:utf-8
import operator
import 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=age

list=[]
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)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值