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

 更新时间:2018年12月19日 10:41:56   作者:Asia-Lee  
这篇文章主要介绍了Python实现对字典分别按键(key)和值(value)进行排序的方法,结合实例形式分析了Python基于sorted函数及operator库进行字典排序的相关操作技巧,需要的朋友可以参考下

本文实例讲述了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 neg(a)
非运算 not a not_(a)
正数 + a pos(a)
右移运算 a >> b rshift(a, b)
切片赋值 seq[i:j] = values setitem(seq, slice(i, j), values)
切片删除 del seq[i:j] delitem(seq, slice(i, j))
切片 seq[i: j] getitem(seq, slice(i, j))
字符串格式化 s % obj mod(s, obj)
减法 a - b sub(a, b)
真值测试 obj truth(obj)
小于 a < b lt(a, b)
小于等于 a <= b le(a, b)
等于 a == b eq(a, b)
不等于 a != b ne(a, b)
大于等于 a >= b ge(a, b)
大于 a > b gt(a, b)

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

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

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

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

相关文章

  • Python中的反射知识点总结

    Python中的反射知识点总结

    在本篇文章里小编给大家整理了一篇关于Python中的反射知识点总结内容,有需要的朋友们可以跟着学习参考下。
    2021-11-11
  • 跟老齐学Python之Python文档

    跟老齐学Python之Python文档

    文档,这个词语在经常在程序员的嘴里冒出来,有时候他们还经常以文档有没有或者全不全为标准来衡量一个软件项目是否高大上。那么,软件中的文档是什么呢?有什么要求呢?python文档又是什么呢?文档有什么用呢?
    2014-10-10
  • python 巧用正则寻找字符串中的特定字符的位置方法

    python 巧用正则寻找字符串中的特定字符的位置方法

    下面小编就为大家分享一篇python 巧用正则寻找字符串中的特定字符的位置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 关于多元线性回归分析——Python&SPSS

    关于多元线性回归分析——Python&SPSS

    今天小编就为大家分享一篇关于多元线性回归分析——Python&SPSS,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python中浅拷贝copy与深拷贝deepcopy的简单理解

    Python中浅拷贝copy与深拷贝deepcopy的简单理解

    今天小编就为大家分享一篇关于Python中浅拷贝copy与深拷贝deepcopy的简单理解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • python xlsxwriter创建excel图表的方法

    python xlsxwriter创建excel图表的方法

    这篇文章主要为大家详细介绍了python xlsxwriter创建excel图表的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)

    解决selenium模块利用performance获取network日志请求报错的问题(亲测有效)

    这篇文章主要介绍了解决selenium模块利用performance获取network日志请求报错的问题(亲测有效),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 使用Python函数进行模块化的实现

    使用Python函数进行模块化的实现

    这篇文章主要介绍了使用Python函数进行模块化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python+selenium实现趣头条的视频自动上传与发布

    Python+selenium实现趣头条的视频自动上传与发布

    本文主要介绍了通过Python+selenium实现趣头条的短视频自动上传与发布功能,同时支持抖音、快手、b站、小红书等平台的视频自动化同步发布。需要的朋友可以参考一下
    2021-12-12
  • pandas.DataFrame的pivot()和unstack()实现行转列

    pandas.DataFrame的pivot()和unstack()实现行转列

    这篇文章主要介绍了pandas.DataFrame的pivot()和unstack()实现行转列,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-07-07

最新评论