Python 字典排序

1、按“值”排序

按“值”排序就是根据字典的值进行排序,可以使用内置的sorted()函数。

sorted(iterable[, cmp[, key[, reverse]]])

(1)iterable:是可迭代类型类型;
(2)cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
(3)key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
(4)reverse:排序规则. reverse = True 或者 reverse = False,有默认值,默认为升序排列(False)。

返回值:是一个经过排序的可迭代类型,与iterable一样。一般来说,cmp和key可以使用lambda表达式。

如果对字典进行排序,常用的形式如下:sorted(dict.items(), key=lambda e:e[1], reverse=True), 其中e表示dict.items()中的一个元素,e[1]则表示按 值排序如果把e[1]改成e[0],那么则是按键排序,reverse=False可以省略,默认为升序排列。

说明:字典的items()函数返回的是一个列表,列表的每个元素是一个键和值组成的元组。因此,sorted(dict.items(), key=lambda e:e[1], reverse=True)返回的值同样是由元组组成的列表。

2、按“键”排序

对字典进行按键排序也可以使用上面的sorted函数,只要改为sorted(dict.items(), key=lambda e:e[0], reverse=True)就可以了。

更多内容请参考博客python 字典排序
我这里仅仅是想说明以下的问题,就不全部写了

【注意】

排序后的字典不再是字典,一个字典排序后就会变成一个list,这是大家一定要注意的地方。

这个list由二维元组组成,(键,值)这样的形式,所以要提取这个list中的元素的时候一定要按照List的方式去提取,千万不要按照dict的方式去提取,否则会出错。

我自己的一个例子:
【注】我要读取的这个文件每行都有一句话,很简单仅此而已。我想把这个文件读取出来,然后加序号,排序,输出即可。

contents = {}
fp = open("f:\emotion\mysite\weibo_crawler\chinese_weibo.txt", "r")
index = 1
for content in fp.readlines():
    contents[index] = content
    nums.append(index)
    index = index + 1

new_contents = sorted(contents.items(),key=lambda e:e[0],reverse=False)   #排序
for key,value in new_contents:
    print key,value

fp.close()

此处要注意,我的未排序的字典的键是“1,2,3,4,5…”,这些都是数字,所以排序的时候按照数字来排序。
如果你的字典的键是”1,2,3,4,5,6…”但是你的是字符串,那么排序的情况是按照字符串来排序。顺序是
[1,10,11,12,13,14,15,16,17,18,19,2,21,22,23,24,25,26,27,28,29,3,31,32,33,34]

所以请大家一定要注意
排序的时候你的键是字符串还是数字你自己一定要清楚,否则可能程序不会按照你的预想去运行然后你还不知道。

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值