Python怎么排序字典,当字典里的值都是一个类的实例化对象,键为不同的字符串,根据实例化对象的值x排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python怎么排序字典,当字典里的值都是一个类的实例化对象,键为不同的字符串,根据实例化对象的值x排序相关的知识,希望对你有一定的参考价值。
就像这样
class A:
def __init__(self):
self.x=10
>>>a=A()
>>>a.x =3
>>>b=A()
>>>c =A()
>>>c.x=5
dic="01": a , "02" : b , "03": c)
这个时候字典虽然创立了,但是我想让其每一项根据其值的 .x类属性的值排序,从大到小,
所以 字典顺序应该变为这样 "02" : b , "03": c, "01": a
然后将其排序后的字典赋值给另一个空字典 x
大神求解!
很容易,调用函数按值排序就好了。追答
另外自定义的类要加上比较函数,参考http://m.blog.csdn.net/article/details?id=41357359
追问能写下我这个例子该怎么解决吗
追答手机不方便写,参考我发的网址,就是自定义的类写一个比较函数使之能比较,然后调用sort即可。
ok?
解决了吗,认为有帮助请采纳。
追问怎么回事
用的是
python3
sorted函数有误
Python字典嵌套字典排序,该怎么处理?
比如字典a = 'a':'aaa':3, 'b':'bbb':4, 'c':'ccc':1, 'd':'ddd':2,嵌套的字典键值不一样怎么用sorted(a.items(),key=lambda x:x[1][''])处理
感觉这个需求有些许问题,因为通常对比排序的都是同一类型的数据,譬如aaa代表是年龄,bbb代表的是工资,等等... 所以不会拿自己的年龄和工资作一次排序。
参考技术A 要做的话,可以手动给它并成一个新列‘sort_key’。 obj就是你最外层的a,免得同名混淆 参考技术B 一: 字典排序# 要做的话,可以手动给它并成一个新列‘sort_key’。 obj就是你最外层的a,免得同名混淆
for i in obj:
obj[i]['sort_key'] = obj[i].values()[0]
# 目的是构造出这样的结构:
# ('c', 'sort_key': 1, 'ccc': 1), ('d', 'sort_key': 2, 'ddd': 2), .....)
print(sorted(obj.items(), key = lambda x:x[1]['sort_key']))
解析: 使用sorted 方法, 排序后的结果为一个元组. 可以字符串排序(那数字肯定更没问题了!)
以上是关于Python怎么排序字典,当字典里的值都是一个类的实例化对象,键为不同的字符串,根据实例化对象的值x排序的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Python 2.7 中两级字典的值都指向同一个对象?