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

有时有一种需要,求要按字典的值对字典值进行排序:

下面有两种方法

#!/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
dict2 = sorted(zip(dict1.values(), dict1.keys()))
print(dict2)

print("*********")
#method 2

dict3 = sorted(dict1.items(), key = lambda x : x[1])
print(dict3)

上面这两种方法最终排序完成的都是一个元组,并非字典,如果需要,可以将其还原成字典。

而且定两种方法得出的元组的形式是相反的。但如果这时需要得到键,那这两种方式都是很方便的。

时间: 2024-10-05 16:09:48

按字典的值对字典进行排序的相关文章

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

Python - 字典按值(value)排序

字典安值排序是一个伪命题. 字典本身是不能被排序的, 已经按照关键字(key)排序, 但是列表(list)和元组(tuple)可以排序, 所以字典需要转换列表后排序. 如 import operator x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0} sorted_x = sorted(x.items(), key=operator.itemgetter(1)) 则是转换列表后的排序, dict(sorted_x) == x, 列表转换字典. 代码 # -*- coding

如何对字典按键值大小进行排序

有些时候,我们需要对字典按键值大小进行排序.比如以下情况:一个字典,包含的内容为 国家:人口数.{'Indonesia' : '239870000', 'Malaysia' : '28401000'}注意字典的键值为字符串'239870000',不能直接进行大小排序.我们需要将它转换成数字. 下面做一个案例.已有一个世界各国从1960年到2010年的人口统计.我们需要将2010年各国人口提取出来按从大到小排序. 参考代码: '''导入一个人口统计文本文件'''import jsonfilenam

列表中嵌套字典,根据字典的值排序

格式:数据类型为列表,列表元素为字典.由字典组织的列表形式. 分析:可以将列表中的字典先放入到一个大字典中,对整个字典进行排序,在排序完成后,再转换为列表包含字典的形式即可 现在有一个列表,根据每个字典的值进行排序. dict_list = [{"ming": 87}, {"mei": 93}, {"hua": 68}, {"jon": 75}, {"ston": 100}, {"jack&quo

python练习:字典value值排序,key值排序

#字典value值排序,key值排序 from random import * dict1 = {x:randint(5,12) for x in "aijwt"} dict2 = {randint(5,12):y for y in "aibjwte"} print ('dict1:',dict1) print ('dict2:',dict2) print ("将字典按value倒序显示,办法(collections的Counter):") fr

封装解构,集合,字典,内建函数和简单选择排序相关知识及习题

封装 将多个值使用逗号分割,组合在一起本质上,返回一个元组,只是省掉了小括号python特有语法,被很多语言学习和借鉴 解构 把线性结构的元素解开,并顺序的赋给其它变量左边接纳的变量数要和右边解开的元素个数一致 转置矩阵 方阵利用封装解构完成代码矩阵先开辟空间再利用封装解构完成代码利用enumerate函数得到索引值完成代码 集合 可变的 . 无序的 . 不重复 的元素的集合set的元素要求必须可以hash元素不可以索引set可以迭代set增加 add(elem)增加一个元素到set中,如果元素

zhlan--Python中的字典遍历方法 & 字典取值

一.Python中的字典遍历方法: info = { 'name':'xiaoming', 'sex':'nan', 'age':20, 'id':1} info2 = { 'name':'hhh', 'sex':'nv', 'addr':'beijign'} 第一种方法: # 直接循环字典,循环的是字典的key,如果想循环的时候同时获取到key和value,那么就要用 .items()方法for k,v in info.items(): print('%s is %s'%(k,v)) 运行结果

C#语言实现的简易数据键值对照字典类

最近遇到了一个场景,就是在数据库中没有数据字典的情况下,由C#程序临时维护一组类似数据字典功能的类.功能是可以通过键取出值,通过值取出对应的键(仅取第一个匹配的键),类要求具备一定的可扩展性,可以对一些控件(如ComboBox)进行数据源的初始化.因此我自己设计了一个模式,用于实现这个功能. 1.准备工作 建立一个Windows窗体应用程序,程序集名为DataDictTest,里面包含窗体FormMain 窗体FormMain中包括一个下拉菜单ComboBox,一个放置在DataGridView

字典转模型的时候,如果字典键值对比模型属性多,解决方法

+ (instancetype)newWithDictionary:(NSDictionary *)dict { news *newOne = [self new]; [newOne setValuesForKeysWithDictionary:dict]; return newOne; } 如果使用KVC需要字典键值对和模型属性一一对应,但是重写下面方法,就可以解决这个问题 方法内部不需要写任何东西 - (void)setValue:(id)value forUndefinedKey:(NSS