Python合并了两个词典

1 python sorting dictionary

我想返回一个字典,其中值是按值的下降长度排序的列表.

恩.

data = {'r': [4,3],'t': [4,5,6], 'n': [1,6]}
Run Code Online (Sandbox Code Playgroud)

必须给

data = {'t': [4,5,6], 'r': [4,3],'n': [1,6]}
Run Code Online (Sandbox Code Playgroud)

然后,在第一次排序之后,我希望按照字母顺序对相同长度的值进行排序,如同

data = {'t': [4,5,6], 'n': [1,6], 'r': [4,3]} 
Run Code Online (Sandbox Code Playgroud)

有办法吗?

Ble*_*der 7

您无法对常规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)
Run Code Online (Sandbox Code Playgroud)

结果如下:

OrderedDict([('t', [4, 5, 6]), ('r', [4, 3]), ('n', [1, 6])])
Run Code Online (Sandbox Code Playgroud)

lambda pair: len(pair[1])是你的关键函数,所以给定一(key, value)对,它返回值的长度.(len(pair[1]), key)如果两对具有相同的值长度,您还可以使用字母顺序排序.