python序列(列表,元组,字典)的常用排序

列表

正向排序

sort()

>>> list=[1,6,3,4,5,2]
>>> list.sort()
>>> list
[1, 2, 3, 4, 5, 6]

  

sorted()

>>> sorted([1,6,3,4,5,2])
[1, 2, 3, 4, 5, 6]

  

sort与sorted区别

sort是永久的,而sorted是临时的。

 

逆向排序

sort()

>>> list=[1,6,3,4,5,2]
>>> list.sort(reverse=True)
>>> list
[6, 5, 4, 3, 2, 1]

  

sorted()

>>> sorted([1,6,3,4,5,2],reverse=True)
[6, 5, 4, 3, 2, 1]

 

反转排序

reverse()

>>> list=[1,6,3,4,5,2]
>>> list.reverse()
>>> list
[2, 5, 4, 3, 6, 1]

 

切片方法

>>> list=[1,6,3,4,5,2]
>>> list[::-1]
[2, 5, 4, 3, 6, 1]

  

多层列表排序

#对列表的第二个元素排序

>>> list=[('b',6),('a',1),('c',3),('d',4)]
>>> list.sort(key=lambda x:x[1])
>>> list
[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

 

#对列表的第二个元素排序后,再对第一个元素排序

>>> list=[('b',1),('a',1),('c',3),('d',4)]
>>> list.sort(key=lambda x:(x[1],x[0]))
>>> list
[('a', 1), ('b', 1), ('c', 3), ('d', 4)]

  

 

元组

元组排序可通过list函数将元组转换成列表,采用列表排序方法即可。

 

元组列表间转换方法:

list1=[1,2,3]
tup1=tuple(list1)
print(tup1)
print(list(tup1))

运行结果
(1, 2, 3)
[1, 2, 3]

 

字典

通过key排序
d = {'a': 2, 'A': 1, 'c': 3, 'b': 2}
sorted_key_list = sorted(d)					#正向排序
#sorted_key_list = sorted(d,reverse=True)			#逆向排序
print(sorted_key_list)
sorted_dict = list(map(lambda x:{x:d[x]}, sorted_key_list))
print(sorted_dict)

运行结果
['A', 'a', 'b', 'c']						# 根据ascii码大小排序
[{'A': 1}, {'a': 2}, {'b': 2}, {'c': 3}]

 

通过value排序 
d = {'a': 2, 'A': 1, 'c': 3, 'b': 2}
sorted_key_list = sorted(d, key=lambda x:d[x])				#正向排序
# sorted_key_list = sorted(d, key=lambda x:d[x], reverse=True)   	#逆向排序
print(sorted_key_list)

sorted_dict = list(map(lambda x:{x:d[x]}, sorted_key_list))
print(sorted_dict)

运行结果:
['A', 'a', 'b', 'c']
[{'A': 1}, {'a': 2}, {'b': 2}, {'c': 3}]

  

PS:

Map函数在python2中返回的是一个列表,而在python3中返回的是一个迭代器(地址)。故想以列表输出,需要在map前添加list,转换下格式。

 

转载于:https://www.cnblogs.com/lilip/p/9249389.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值