码迷,mamicode.com
首页 > 编程语言 > 详细

python_如何对字典进行排序?

时间:2017-07-26 00:01:08      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:生成   class   先后   and   ict   res   英语   for   usr   

案例:

       某班英语成绩以字典的形式存储为:

              {‘lili’:78, ‘jin’:50, ‘liming’: 30, ......}

   依据成绩高低,进行学生成绩排名

如何对字典排序?

  方法1:

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    # 获得字典的key
    keys = data.keys()
    
    # 获得字典的value
    valus = data.values()
    
    # 按(value,keys)进行zip拼接
    data_items = zip(valus, keys)
    
    # 按value进行排序,依据zip函数值的先后顺序,reverse表示列表是否翻转
    return sorted(data_items, reverse=True)


if __name__ == ‘__main__‘:
    # 生成abcdefg学生对应的分数
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 获取排名
    result = sort_dict(data)
    print(result)

  方法2:

         按key排序

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    print(data.items())
    # 按key进行排序,reverse 表示列表是否翻转,x[0] 取的是data.items()中对应字典的key值
    return sorted(data.items(), key=lambda x: x[0], reverse=True)

if __name__ == ‘__main__‘:
    # 生成abcdefg各学生对应的分数
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 获取排名
    result = sort_dict(data)
    print(result)

  按value排序

#!/usr/bin/python3

from random import randint


def sort_dict(data):
    print(data.items())
    # 按value进行排序,reverse 表示列表是否翻转,x[0] 取的是data.items()中对应字典的value值
    return sorted(data.items(), value=lambda x: x[1], reverse=True)

if __name__ == ‘__main__‘:
    # 生成abcdefgg各学生对应的分数
    data = {k: randint(0, 100) for k in ‘abcdefg‘}
    
    # 获取排名
    result = sort_dict(data)
    print(result)

  先把字典变成列表中元组形式,然后通过sorted函数,lambda迭代每个列表值,x[0]指向字典key,x[1]指向value,reverse是否反转,默认从小到大

 

python_如何对字典进行排序?

标签:生成   class   先后   and   ict   res   英语   for   usr   

原文地址:http://www.cnblogs.com/2bjiujiu/p/7236786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!