python 中的字典怎么排序,怎么按照添加的顺序显示 Python中字典按照指定列表的顺序排列

python\u600e\u4e48\u5bf9\u5b57\u5178\u8fdb\u884c\u6392\u5e8f

python \u5b57\u5178\uff08dict\uff09\u7684\u7279\u70b9\u5c31\u662f\u65e0\u5e8f\u7684\uff0c\u6309\u7167\u952e\uff08key\uff09\u6765\u63d0\u53d6\u76f8\u5e94\u503c\uff08value\uff09\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u5b57\u5178\u6309\u503c\u6392\u5e8f\u7684\u8bdd\uff0c\u90a3\u53ef\u4ee5\u7528\u4e0b\u9762\u7684\u65b9\u6cd5\u6765\u8fdb\u884c\uff1a

1 \u4e0b\u9762\u7684\u662f\u6309\u7167value\u7684\u503c\u4ece\u5927\u5230\u5c0f\u7684\u987a\u5e8f\u6765\u6392\u5e8f\u3002

dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True)
print dict

\u8f93\u51fa\u7684\u7ed3\u679c\uff1a
[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)]

\u4e0b\u9762\u6211\u4eec\u5206\u89e3\u4e0b\u4ee3\u7801
print dic.iteritems() \u5f97\u5230[(\u952e\uff0c\u503c)]\u7684\u5217\u8868\u3002
\u7136\u540e\u7528sorted\u65b9\u6cd5\uff0c\u901a\u8fc7key\u8fd9\u4e2a\u53c2\u6570\uff0c\u6307\u5b9a\u6392\u5e8f\u662f\u6309\u7167value\uff0c\u4e5f\u5c31\u662f\u7b2c\u4e00\u4e2a\u5143\u7d20d[1\u7684\u503c\u6765\u6392\u5e8f\u3002reverse = True\u8868\u793a\u662f\u9700\u8981\u7ffb\u8f6c\u7684\uff0c\u9ed8\u8ba4\u662f\u4ece\u5c0f\u5230\u5927\uff0c\u7ffb\u8f6c\u7684\u8bdd\uff0c\u90a3\u5c31\u662f\u4ece\u5927\u5230\u5c0f\u3002

2 \u5bf9\u5b57\u5178\u6309\u952e\uff08key\uff09\u6392\u5e8f\uff1a
dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0}
dict= sorted(dic.iteritems(), key=lambda d:d[0]) d[0]\u8868\u793a\u5b57\u5178\u7684\u952e
print dict

roles = ["OWNER", "RCOM", "HRGDL2", "HRM", "HRH", "MP", "HP", "VP", "GM"]info = {"VP": "80003", "HRM": "F140019", "MP": "F130008", "HRGDL2": "F140390", "OWNER": "F133255", "RCOM": "F900151", "GM": "00903", "HP": "80355", "HRH": "81453"}sorted_dict = map(lambda x:{x:info[x]}, roles)print(sorted_dict)

给你看看这个字典 dic = {'a':1 , 'b':2 , 'c': 3},字典中的元素没有顺序,所以dic[0]是有语法错误的。并且不可以有重复的键值,所以 dic.add['c'] = 4后,字典变成 {'a':1 , 'b':2 , 'c': 4}.现思考如下:如何根据需要可以根据“键”或“键值”进行不同顺序的排序?函数原型:sorted(dic,value,reverse)解释:dic为比较函数,value 为排序的对象(这里指键或键值), reverse:注明升序还是降序,True--降序,False--升序(默认)案例:dic = {'a':1 , 'b':2 , 'c': 3}1.print sorted(dic.iteritems(), key = lambda asd:asd[0] ,reverse = True)#结果:[('c', 3), ('b', 2), ('a', 1)]2.print sorted(dic.iteritems(), key = lambda asd:asd[0] )#结果:[('a', 1), ('b', 2), ('c', 3)] ,默认(升序)3.print sorted(dic.iteritems(), key = lambda asd:asd[1] )#结果:[('a', 1), ('b', 2), ('c', 3)]这里介绍两个函数:1.lambda案例:fuc = lambda x:x+ 2print fuc(3) #结果5,意思对于x ,返回 x + 22.iteritems()案例:dic = {'a':1 , 'b':2 , 'c': 3}print dic.iteritems() # 返回字典键-值对的一个迭代器在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键(【0】)或键值(【1】)

其实在Python2.7.x版本中, collections类增加了OrderedDict, 用法如下:pywugw@pywugw-laptop:~$ /usr/local/bin/python2.7 Python 2.7b1 (r27b1:79927, Apr 26 2010, 11:44:19) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from collections import OrderedDict >>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}#按key排序 >>> OrderedDict(sorted(d.items(), key=lambda t: t[0])) OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])#按value排序 >>> OrderedDict(sorted(d.items(), key=lambda t: t[1])) OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]) #按key的长度排序 >>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0]))) OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])

1.lambda
功能: 创建匿名函数
区别: 和def函数定义,以下两点区别
lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量
lambda它只是一个表达式,而def则是一个语句

2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对
注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键([0])或键值(1])

扩展阅读:python字典基本用法 ... python中对字典的值排序 ... python 字典如何输出键值 ... python 删除字典元素 ... python字典的用法举例 ... python空字典添加元素 ... python字典增加和删除 ... python 字典嵌套 ... python如何对字典进行排序 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网