2024-04-29 08:07:05 发布
网友
我有一个对象字典,其中键是一个简单的字符串,值是一个具有几个属性的数据对象。我想根据字典值中的属性对字典进行排序。我用这个来根据字典值进行排序
sorted = dict.values() sorted.sort(key = operator.attrgetter('total'), reverse=True)
这将产生一个经过排序的值列表(这是预期的),并且我会丢失字典中的原始键(自然)。我想把键和值一起排序。。。我怎样才能做到这一点?如有任何帮助将不胜感激?在
您将希望使用.items()而不是.values(),例如:
.items()
.values()
def keyFromItem(func): return lambda item: func(*item) sorted( dict.items(), key=keyFromItem( lambda k,v: (v['total'], k) ) )
上面的将首先根据total排序,对于total相等的项,将按key的字母顺序排序。它将以(key,value)对的形式返回项,您可以通过[x[1] for x in sorted(...)]来获得值。在
(key,value)
[x[1] for x in sorted(...)]
使用items而不是values-并且a只需使用lambda来完成排序键本身,因为它没有现成的operator:
items
values
operator
sorted = dict.items() sorted.sort(key = lambda item: item[1].total, reverse=True)
使用.items()(或其迭代器版本iteritems)而不是.values()来获得(key, value)元组的列表。在
iteritems
(key, value)
items = sorted(dct.iteritems(), key=lambda x: x[1].total, reverse=True)
您将希望使用
.items()
而不是.values()
,例如:上面的将首先根据total排序,对于total相等的项,将按key的字母顺序排序。它将以
(key,value)
对的形式返回项,您可以通过[x[1] for x in sorted(...)]
来获得值。在使用
items
而不是values
-并且a只需使用lambda来完成排序键本身,因为它没有现成的operator
:使用
.items()
(或其迭代器版本iteritems
)而不是.values()
来获得(key, value)
元组的列表。在相关问题 更多 >
编程相关推荐