我想返回一个字典,其中值是按值的降序排序的列表。
前任。
data = {'r': [4,3],'t': [4,5,6], 'n': [1,6]}
必须给
data = {'t': [4,5,6], 'r': [4,3],'n': [1,6]}
然后,在第一次排序之后,我希望对相同长度的值按字母顺序对键进行排序,就像
data = {'t': [4,5,6], 'n': [1,6], 'r': [4,3]}
有办法吗?
我想返回一个字典,其中值是按值的降序排序的列表。
前任。
data = {'r': [4,3],'t': [4,5,6], 'n': [1,6]}
必须给
data = {'t': [4,5,6], 'r': [4,3],'n': [1,6]}
然后,在第一次排序之后,我希望对相同长度的值按字母顺序对键进行排序,就像
data = {'t': [4,5,6], 'n': [1,6], 'r': [4,3]}
有办法吗?
您无法对常规 Python 字典进行排序。他们没有秩序。但是,您可以使用collections.OrderedDict
:
from collections import OrderedDict
data = {'r': [4,3],'t': [4,5,6], 'n': [1,6]}
tuples = data.items()
tuples.sort(key=lambda pair: len(pair[1]), reverse=True)
ordered = OrderedDict(tuples)
结果:
OrderedDict([('t', [4, 5, 6]), ('r', [4, 3]), ('n', [1, 6])])
lambda pair: len(pair[1])
是你的关键函数,所以给定一(key, value)
对,它返回值的长度。(len(pair[1]), key)
如果两对具有相同的值长度,您还可以使用按字母顺序排序。