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

作者:Asia-Lee 时间:2021-06-05 00:36:32 

本文实例讲述了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 + badd(a, b)
字符串拼接seq1 + seq2concat(seq1, seq2)
包含测试obj in seqcontains(seq, obj)
普通除法a / btruediv(a, b)
取整除法a // bfloordiv(a, b)
按位与a & band_(a, b)
按位异或a ^ bxor(a, b)
按位取反~ ainvert(a)
按位或a | bor_(a, b)
指数运算a ** bpow(a, b)
识别a is bis_(a, b)
识别a is not bis_not(a, b)
索引赋值obj[k] = vsetitem(obj, k, v)
索引删除del obj[k]delitem(obj, k)
索引obj[k]getitem(obj, k)
左移a << blshift(a, b)
取模a % bmod(a, b)
乘法a * bmul(a, b)
负数-aneg(a)
非运算not anot_(a)
正数+ apos(a)
右移运算a >> brshift(a, b)
切片赋值seq[i:j] = valuessetitem(seq, slice(i, j), values)
切片删除del seq[i:j]delitem(seq, slice(i, j))
切片seq[i: j]getitem(seq, slice(i, j))
字符串格式化s % objmod(s, obj)
减法a - bsub(a, b)
真值测试objtruth(obj)
小于a < blt(a, b)
小于等于a <= ble(a, b)
等于a == beq(a, b)
不等于a != bne(a, b)
大于等于a >= bge(a, b)
大于a > bgt(a, b)

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys

希望本文所述对大家Python程序设计有所帮助。

来源:https://blog.csdn.net/asialee_bird/article/details/79675802

标签:Python,字典,排序
0
投稿

猜你喜欢

  • python中list*n生成多维数组与for循环生成多维数组的区别说明

    2022-01-10 08:57:33
  • python的Template使用指南

    2023-10-14 01:30:58
  • 深入浅析mybatis oracle BLOB类型字段保存与读取

    2024-01-15 02:21:26
  • MySql中sql语句执行过程详细讲解

    2024-01-18 07:44:26
  • vue2.0 自定义 饼状图 (Echarts)组件的方法

    2024-04-27 15:51:07
  • 利用python批量修改word文件名的方法示例

    2023-03-15 00:05:12
  • ASP从数据库中获取下载文件

    2007-10-06 21:17:00
  • Java正则表达式循环匹配字符串方式

    2023-07-25 03:29:48
  • python 移动图片到另外一个文件夹的实例

    2022-09-17 07:56:14
  • 清除浮动的最简写法

    2009-03-30 15:58:00
  • Python OpenCV对图像像素进行操作

    2021-02-25 13:02:20
  • 排序与检索

    2008-05-18 13:09:00
  • Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法

    2022-08-13 21:32:25
  • Python替换NumPy数组中大于某个值的所有元素实例

    2021-11-11 07:36:20
  • Python多进程写入同一文件的方法

    2023-09-08 10:20:24
  • sqlserver 巧妙的自关联运用

    2012-07-21 14:55:12
  • Python读取ini配置文件传参的简单示例

    2022-02-06 09:51:36
  • Python数据提取-lxml模块

    2022-04-03 15:15:19
  • 一起来学习一下python的数字类型

    2023-03-10 05:28:30
  • 在ASP.NET 2.0中操作数据之十一:基于数据的自定义格式化

    2023-07-14 19:53:21
  • asp之家 网络编程 m.aspxhome.com