他想自己在她眼里出现的时候,璀璨如星辰。可即使有那么一天,他披挂着漫天的星辰归来,可是仰望天空的瞳孔已经不在,看星星的女孩已经走了,那璀璨又有什么意思呢?孤单得连星星也想坠落。
循环遍历字典的时候,遍历对象都是字典的键,做对比的时候对比的也是字典的键,如果想要对比字典的值呢?上一篇文章有说到字典的.items()|.keys()|.values()的使用。此篇记述按照字典的值的大小进行排序。
import sys
import random
reload(sys)
sys.setdefaultencoding('utf-8')
目标
{'chen': 78, 'zhao': 70, 'xie': 67}
//这种字典,要对值进行按大小排序
生成字典
data_str=['xie','zhao','chen']
data_dic={k:random.randint(61,80) for k in data_str}
字典的常用方法
print data_dic.keys()
//打印字典的所有键
print data_dic.values()
//打印字典的所有值
prinr data_dic.items()
//返回列表形式的字典,(就是列表)可以使用列表索引list[1]选择元素
print data_dic.viewkeys()
//打印字典所有键的集合,集合可以用去交集并集去重复
方法一
print sorted(zip(data_dic.values(),data_dic.keys()))
//zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
//结果:[(64, 'xie'), (72, 'chen'), (75, 'zhao')]
方法二
print sorted(data_dic.items(),key=lambda x:x[1])
//sorted()中有key,cmp,reverse三种方法。
//结果:[('xie', 64), ('chen', 72), ('zhao', 75)]
//当然还可以转换成字典的形式
print dict([('xie', 64), ('chen', 72), ('zhao', 75)])
一般来说用的最多的是key,key接受一个函数。比如key=abs(绝对值),或者先定义一个函数,然后把这个函数赋给key
- cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。
- key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。
- reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。
方法三
from collections import OrderedDict
//OrderedDict能够对字典的值进行排序,只打印键,需要注意的是要先把字典赋给OrderedDict
data_dic = OrderedDict()
data_dic={k:random.randint(61,80) for k in data_str}
for x in data_dic:print x
结果:chen
zhao
xie
OrderedDict的方法适用于只看键的排序,应用程序一般用作按照值排序好之后,查看键。
字典合并
a = {'user':'langzi'}
b = {'sex':'man'}
a.update(b)
print a
输出结果:
{'user': 'langzi', 'sex': 'man'}