一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python中字典数据排序几种方法

时间:2014-04-09 编辑:简简单单 来源:一聚教程网

字典的排序

先来演示字典的排序函数sort()的使用:

 代码如下 复制代码

dict = {"a":"apple","b":"banana","g":"grape","c":"oreage"}
print dict

#按照key进行排序。items可以用于字典的遍历,返回(key,value)的序列,lampda用于创建匿名函数,并返回计算结果,d[0]表示key

 代码如下 复制代码

print sorted(dict.items(), key=lampda d:d[0])

#按照value进行排序。同样d[1]表示value

print sorted(dict.items(), key=lampda d:d[1])

例子

 代码如下 复制代码

dict = [
                {'id':'4','name':'b'},
                {'id':'6','name':'c'},
                {'id':'3','name':'a'},
                {'id':'1','name':'g'},
                {'id':'8','name':'f'}
            ]
#dict.sort(lambda x,y: cmp(x['id'], y['id'])) 
dict = sorted(dict, key=lambda x:x['id'])
print dict

这种结构有很多用处。

月小升在计算一个字符串长度的时候,发现这个办法非常有效。

条件:有一个字符串数组

 代码如下 复制代码

a = ['adsfasdfsaf','asdfsadfsadfsadf','aaa'.....]

需要找出最长的三个字符串

办法就是

 代码如下 复制代码

dict = {}
dict.setdefault(“word”,adsfasdfsaf)
dict.setdefault(“len”,12)

arr = []

arr.append(dict)
arr = sorted(arr, key=lambda x:x['len'])

这样就按字符长度排序了。下面整理了一些排序例子

对字符串列表进行排序

 代码如下 复制代码
list_str = ['blue','allen','sophia','keen']
print list_str
list_str.sort()
print list_str
#执行结果:
['blue', 'allen', 'sophia', 'keen']
['allen', 'blue', 'keen', 'sophia']

对整型数进行排序

 代码如下 复制代码

list_int = [34,23,2,2333,45]
print list_int
list_int.sort()
print list_int
#执行结果:
[34, 23, 2, 2333, 45]
[2, 23, 34, 45, 2333]

对字典数据进行排序

 代码如下 复制代码
dict_str = {'blue':'5555@sina.com',
                'allen':'222@163.com',
                'sophia':'4444@gmail.com',
                'ceen':'blue@263.net'}
print dict_str
# 按照key进行排序
print sorted(dict_str.items(), key=lambda d: d[0])  
# 按照value进行排序
print sorted(dict_str.items(), key=lambda d: d[1])
#执行结果:
{'blue': '5555@sina.com', 'allen': '222@163.com', 'sophia': '4444@gmail.com', 'ceen': 'blue@263.net'}
[('allen', '222@163.com'), ('blue', '5555@sina.com'), ('ceen', 'blue@263.net'),('sophia', '4444@gmail.com')]
[('allen', '222@163.com'), ('sophia', '4444@gmail.com'), ('blue', '5555@sina.com'), ('ceen', 'blue@263.net')]

热门栏目