首页 > 编程 > Python > 正文

Python实现对字典分别按键(key)和值(value)进行排序的方法分析

2020-02-16 00:13:10
字体:
来源:转载
供稿:网友

本文实例讲述了Python实现对字典分别按键(key)和值(value)进行排序的方法。分享给大家供大家参考,具体如下:

方法一:

#使用sorted函数进行排序'''sorted(iterable,key,reverse),sorted一共有iterable,key,reverse这三个参数;其中iterable表示可以迭代的对象,例如可以是dict.items()、dict.keys()等key是一个函数,用来选取参与比较的元素,reverse则是用来指定排序是倒序还是顺序,reverse=true则是倒序,reverse=false时则是顺序,默认时reverse=false。'''#初始化字典dict_data={6:9,10:5,3:11,8:2,7:6}

1、对字典按键(key)进行排序

#对字典按键(key)进行排序(默认由小到大)test_data_0=sorted(dict_data.keys())#输出结果print(test_data_0) #[3, 6, 7, 8, 10]test_data_1=sorted(dict_data.items(),key=lambda x:x[0])#输出结果print(test_data_1) #[(3, 11), (6, 9), (7, 6), (8, 2), (10, 5)]

2、对字典按值(value)进行排序

#对字典按值(value)进行排序(默认由小到大)test_data_2=sorted(dict_data.items(),key=lambda x:x[1])#输出结果print(test_data_2) #[('8', 2), ('10', 5), ('7', 6), ('6', 9), ('3', 11)]test_data_3=sorted(dict_data.items(),key=lambda x:x[1],reverse=True)#输出结果print(test_data_3) #[('3', 11), ('6', 9), ('7', 6), ('10', 5), ('8', 2)]

方法二:

import operator#初始化字典dict_data={6:9,10:5,3:11,8:2,7:6}#按键(key)进行排序test_data_4=sorted(dict_data.items(),key=operator.itemgetter(0))test_data_5=sorted(dict_data.items(),key=operator.itemgetter(0),reverse=True)print(test_data_4) #[(3, 11), (6, 9), (7, 6), (8, 2), (10, 5)]print(test_data_5) #[(10, 5), (8, 2), (7, 6), (6, 9), (3, 11)]#按值(value)进行排序test_data_6=sorted(dict_data.items(),key=operator.itemgetter(1))test_data_7=sorted(dict_data.items(),key=operator.itemgetter(1),reverse=True)print(test_data_6) #[(8, 2), (10, 5), (7, 6), (6, 9), (3, 11)]print(test_data_7) #[(3, 11), (6, 9), (7, 6), (10, 5), (8, 2)]

附:operator库常用函数说明

操作 语法 函数
相加 a + b add(a, b)
字符串拼接 seq1 + seq2 concat(seq1, seq2)
包含测试 obj in seq contains(seq, obj)
普通除法 a / b truediv(a, b)
取整除法 a // b floordiv(a, b)
按位与 a & b and_(a, b)
按位异或 a ^ b xor(a, b)
按位取反 ~ a invert(a)
按位或 a | b or_(a, b)
指数运算 a ** b pow(a, b)
识别 a is b is_(a, b)
识别 a is not b is_not(a, b)
索引赋值 obj[k] = v setitem(obj, k, v)
索引删除 del obj[k] delitem(obj, k)
索引 obj[k] getitem(obj, k)
左移 a << b lshift(a, b)
取模 a % b mod(a, b)
乘法 a * b mul(a, b)
负数 -a
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表