python字典排序
1、python 字典按value排序
yuwen = {'JiaNaiLiang': 60, 'LiXiaoLu': 10, 'TianLaoShi': 44, 'MaSu': 99, 'KongLingHui': 98, 'LiuLaoShi': 77}
方法一: 排序之后返回的是字典
d.items()实际上是将d转换为可迭代对象,迭代对象的元素为 ('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)),items()方法将字典的元素 转化为了元组,而这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数(如果写作key=lambda x:x[0]的话则是选取第一个元素作为比较对象,也就是key值作为比较对象。lambda x:y中x表示输出参数,y表示lambda 函数的返回值),所以采用这种方法可以对字典的value进行排序。注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。
倒序:
dict(sorted(yuwen.items(), key=lambda x: x[1], reverse=True))
正序:
dict(sorted(yuwen.items(), key=lambda x: x[1])
结果
{'MaSu': 99, 'KongLingHui': 98, 'LiuLaoShi': 77, 'JiaNaiLiang': 60, 'TianLaoShi': 44, 'LiXiaoLu': 10}
不加dict
[('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)]
方法二:返回是值是列表内嵌套元组
import operator
倒序:
sorted(yuwen.items(),key = operator.itemgetter(1),reverse=True)
正序:
sorted(yuwen.items(),key = operator.itemgetter(1))
结果:
[('MaSu', 99), ('KongLingHui', 98), ('LiuLaoShi', 77), ('JiaNaiLiang', 60), ('TianLaoShi', 44), ('LiXiaoLu', 10)]
方法三:yuwen.values()在前面是按value值排序,如果key在前面是按key排序
f = zip(yuwen.values(),yuwen.keys())
sorted(f)
结果:
[(10, 'LiXiaoLu'), (44, 'TianLaoShi'), (60, 'JiaNaiLiang'), (77, 'LiuLaoShi'), (98, 'KongLingHui'), (99, 'MaSu')]
2、python 字典按key排序
方法一:
倒序:
sorted(yuwen.items(), key=lambda x: x[0], reverse=True)
正序:
sorted(yuwen.items(), key=lambda x: x[0])
结果:
[('TianLaoShi', 44), ('MaSu', 99), ('LiuLaoShi', 77), ('LiXiaoLu', 10), ('KongLingHui', 98), ('JiaNaiLiang', 60)]
方法二:
print(sorted(yuwen.items(),key = operator.itemgetter(0),reverse=True))
方法三:
f=zip(yuwen.keys(),yuwen.values())
sorted(d)
3、只排key或value:
-- dict.keys 排序
sorted(yuwen.keys())
-- dict.keys 返回的是 dict_keys 对象,若需要转换为列表,才可以按列表取值
list(yuwen.keys())[0]
-- dict.values 排序
sorted(yuwen.values())
-- dict.values 返回的是 dict_values 对象,若需要转换为列表,才可以取值
list(yuwen.values())[0]