按值从最大到最小数组对字典排序。 Python3

时间:2018-12-10 15:05:01

标签: python-3.x python-3.5

输入:

a = {'555': ['350975553655799810'], '333: ['234000479699468290'], '488': ['298803528183447552', '298069263703474177', '292721536517931008', '252858117883297792', '376836317469736961', '476413939975192578']}

出局:

a = {'488': ['298803528183447552', '298069263703474177', '292721536517931008', '252858117883297792', '376836317469736961', '476413939975192578'], '555': ['350975553655799810'], '333: ['234000479699468290']}

按字典值将字典从最大数组到最小数组排序。 救命!

1 个答案:

答案 0 :(得分:0)

除非我对这个问题有误解,否则我认为您没有正确使用字典。我尝试在评论中要求澄清,但这似乎无济于事。

字典在键值对系统上工作。这意味着您使用键而不是传统索引(0、1、2,...)来访问值。

例如,假设我们有一个字典调用d

{ 'fruits': ['apple', 'banana', 'orange'], 'vegetables': ['carrot', 'potato'] }

在此字典中,我们通过调用['apple', 'banana', 'orange']访问数组d['fruits']

从某种意义上说,我们不会谈论字典的“排序”:

{ 'vegetables': ['carrot', 'potato'], 'fruits': ['apple', 'banana', 'orange'] }

鉴于数据类型,这毫无意义。


您可能正在询问其他问题。如果您要执行的操作如下:

输入:

{ '1': ['x', 'y', 'z'], '2': ['x'], '3': ['x', 'y'] }

输出:

{ '1': ['x'], '2': ['x', 'y'], '3': ['x', 'y', 'z'] }

执行此操作的方法是,首先创建一个键数组,然后创建一个元素数组:

keys = list(d.keys())
elements = list()
for k in keys:
    elements.append(d[k])

然后,您将使用sorting algorithm of your choice对这两者进行排序。将它们都排序后,您将遍历keys列表,并将相应的值添加到原始字典中。

for i in range(len(keys)):
    d[keys[i]] = elements[i]

这将为您提供一个新字典,其中最小的键与最小的(按长度)列表配对。 (可选)以与键数组相反的方式对elements数组进行排序,以使最大的键与最小的列表配对。