对象分类字典

2024-04-29 08:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个对象字典,其中键是一个简单的字符串,值是一个具有几个属性的数据对象。我想根据字典值中的属性对字典进行排序。我用这个来根据字典值进行排序

sorted = dict.values()
sorted.sort(key = operator.attrgetter('total'), reverse=True)

这将产生一个经过排序的值列表(这是预期的),并且我会丢失字典中的原始键(自然)。我想把键和值一起排序。。。我怎样才能做到这一点?如有任何帮助将不胜感激?在


Tags: 数据对象key字符串字典属性排序sort
3条回答

您将希望使用.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(...)]来获得值。在

使用items而不是values-并且a只需使用lambda来完成排序键本身,因为它没有现成的operator

sorted = dict.items()
sorted.sort(key = lambda item: item[1].total, reverse=True)

使用.items()(或其迭代器版本iteritems)而不是.values()来获得(key, value)元组的列表。在

items = sorted(dct.iteritems(), key=lambda x: x[1].total, reverse=True)

相关问题 更多 >