Lambda和sorted组合排序列表和字典
排序列表
# 实例1
# 根据列表里的字符串中有规律的数字进行排序。
lis = ["PCR 0: Core",
"PCR 9: NTFS Boot Block",
"PCR 2: Option ROM Code",
"PCR 10: Boot Manager",
"PCR 4: Master ",
"PCR 8: NTFS Boot Sector",
"PCR 11: BitLocker"]
print(sorted(lis, key=lambda x:int(x.split(':')[0][4:])))
['PCR 0: Core', 'PCR 2: Option ROM Code', 'PCR 4: Master ', 'PCR 8: NTFS Boot Sector', 'PCR 9: NTFS Boot Block', 'PCR 10: Boot Manager', 'PCR 11: BitLocker']
$这里有个点就是,数字的位数,有两位的,所以不能去[-1]
# 实例2
# sorted功能
tilst = [12, 23, 9, 1]
print(sorted(tilst))
[1,9,12,23]
# 实例3
# 以元素的第一个索引值去排序
lst1 = [[4,2,9],[1,5,6],[7,8,3]]
print(sorted(lst1, key=lambda k:k[0]))
[[1,5,6],[4,2,9],[7,8,3]]
# 以元素的第二个索引值去排序
lst2 = [[4,2,9],[1,5,6],[7,8,3]]
print(sorted(lst2, key=lambda k:k[1]))
[[4,2,9],[1,5,6],[7,8,3]]
字典排序
# 实例1
# 根据字母的先后顺序进行排序(按照字典的键进行排序)
dic1 = {'q':1,'w':2,'e':3}
print(sorted(dic1, key=lambda k:k[0]))
['e', 'q', 'w']
# 实例2
# 按照字典的value进行排序
dic2 = {'q':1,'w':4,'e':3}
print(sorted(dic2.items(), key=lambda K:K[1]))
[('q', 1), ('e', 3), ('w', 4)]
# 实例3
# 字典的键进行排序
dic3 = {'q':1,'w':4,'e':3}
print(sorted(dic3.items(), key=lambda K:K[0]))
[('e', 3), ('q', 1), ('w', 4)]
# 实例4
# 如果我只是想要对value进行排序并且只输出value的结果呢?
dic4 = {'q':1,'w':4,'e':3}
print(sorted(dic4, key=lambda k:dic4[k]))
['q', 'e', 'w']