【问题标题】:Sort the dictionary, by value, from the largest to the smallest array. Python3 [duplicate]按值从最大到最小的数组对字典进行排序。 Python3 [重复]
【发布时间】:2019-05-11 12:17:44
【问题描述】:

输入:

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

输出:

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

按值从最大到最小的数组对字典进行排序。 救命!

【问题讨论】:

  • 你试过什么?您具体需要哪些帮助?
  • 你能补充一些说明吗?您是否试图将数组移动到字典中的不同位置(即,从 555 键的值到 488 键的值)?如果您尝试重新排序字典,那没有任何意义。字典使用键值对系统。它不像数组那样按索引排序。
  • 我需要按数组中元素的数量对字典进行排序。我试过这个选项:list_of_sorted_pairs = [(k, dictionary[k]) for k in sorted(dictionary.keys(), key=dictionary.get, reverse=True)]
  • "我需要按照数组中元素的数量对字典进行排序。"这是什么意思?您是否重新排列数组以与不同的键关联?
  • 我需要把字典排成这样,第一对,键:值,数组长度的值必须是最大的,依此类推。

标签: python-3.x python-3.5


【解决方案1】:

我认为您没有正确使用字典,除非我误解了这个问题。我尝试在 cmets 中要求澄清,但这似乎没有帮助。

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

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

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

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

我们不会像以前那样谈论“排序”字典:

{ '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]

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

【讨论】:

  • 你在正确的轨道上。我需要这样一种排序,只是它是降序的,并且值的键保持不变。
  • 我想告诉你,没有办法对字典进行排序并保持值的键相同。这根本不是字典的工作原理!
  • 我认为有一个解决方案,只是不明显。
猜你喜欢
  • 1970-01-01
  • 2019-03-23
  • 2016-10-31
  • 2016-07-13
  • 1970-01-01
  • 2014-03-06
  • 2017-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多