python_如何对字典进行排序?

案例:

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

{‘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是否反转,默认从小到大

时间: 2024-10-12 16:49:25

python_如何对字典进行排序?的相关文章

Python字典按值排序、包含字典的列表按字典值排序的方法

#-*- encoding=utf-8 -*- import operator #按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] #如果要降序排序,可以指定reverse=True sorted_x = sorted(x.i

按字典值排序--找出大小最大的十个文件

问题分析: 需要确认某路径下所有文件的大小 需要排序,找出最大的十个 以字典的形式保存数据 准备知识: operator模块: fun = operator.itemgetter(1), fun 是一个由operator.itemgetter(1) 返回的函数,当函数fun作用在某个对象时,返回被作用的对象的第1维的值.例如: lis = (6, 56) fun(lis) # 返回lis[1] 注意:operator.itemgetter(1) 并不返回值,返回的是函数,当函数作用在对象时,才会

Python对列表中字典元素排序

问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}' 特点:a,b对应的Python的对象中键对应的键值——列表中包含着相同的字典元素,但是唯一不同的是顺序不同.如果忽略顺序,如何判断两

对python的字典的排序

对字典按键/按值排序,用元组列表的形式返回,同时使用lambda函数来进行: sorted(iterable[, cmp[, key[, reverse]]] iterable:是可迭代类型;cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;reverse:排序规则. reverse = True 或者 reverse = False,有默认值.返回值:是一个经过排序的可迭代类型,与iterab

python字典的排序,按key排序和按value排序---sorted()

>>> d{'a': 5, 'c': 3, 'b': 4} >>> d.items()[('a', 5), ('c', 3), ('b', 4)] 字典的元素是成键值对出现的,字典的排序可用sorted,用关键字key指定排序依据的值--key或者value 按照值排序: #把d.items()所对应的列表的每个元祖的第二个元素(value)传到lambda函数进行排序>>> s=sorted(d.items(),key=lambda x:x[1])&

【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序

问题:想根据一个或多个字典中的值来对列表排序 解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的. # Sort a list of a dicts on a common key rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lnam

[示例]NSDictionary编程题-字典的排序应用(iOS5班)

代码? #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { /** * 第1题 请将如下数据存储成字典,并将字典内容以字符串形式输出,输出:"XXX,年龄XXX岁,职业XXX"(将XXX替换为相应的数据). */ NSString *name = @"wangchongyang"; NSInteger age = 56

按字典的值对字典进行排序

有时有一种需要,求要按字典的值对字典值进行排序: 下面有两种方法 #!/usr/bin/env python #coding:utf-8 #@Author:Andy from random import randint # generate a random dict dict1 = {x :randint(1, 100) for x in "abczyx"} print(dict1) #method 1 # use built in function sorted ,zip dict

C#字典Dictionary排序(顺序、倒序)

这里是针对.NET版本过低的排序方式,没怎么用过,记录一下: 一.创建字典Dictionary 对象 假如 Dictionary 中保存的是一个网站页面流量,key 是网页名称,值value对应的是网页被访问的次数,由于网页的访问次要不断的统计,所以不能用 int 作为 key,只能用网页名称,创建 Dictionary 对象及添加数据代码如下: Dictionary<string, int> dic = new Dictionary<string, int>(); dic.Add