【问题标题】:Python sort associative array with float valuesPython对具有浮点值的关联数组进行排序
【发布时间】:2018-07-21 13:59:25
【问题描述】:

我有一个要排序的关联数组

  items = {1: [5, 30, 0.16666666666666666], 2: [10, 20, 0.5]}

我想按浮点值降序对项目进行排序,所以排序后我应该得到

 items = {2: [10, 20, 0.5], 1: [5, 30, 0.16666666666666666]} 

注意我想主要排序这 0.16666666666666666 和 0.5

欢迎任何帮助!

【问题讨论】:

  • 我不明白你的逻辑。您的列表值保持不变。但是您的钥匙视觉上是相反的。除了 internally [and for all intents] 字典不被认为是有序的(除非您使用的是 Python 3.7)。

标签: python arrays list associative


【解决方案1】:

你需要根据items的排序项创建一个新的dict

items = {k: v for k, v in sorted(items.items(), reverse=True)}

请注意,这仅适用于 Python 3.6+,其顺序保证为插入顺序。我建议改用listOrderedDict

例子:

>>> items = {1: [5, 30, 0.16666666666666666], 2: [10, 20, 0.5]}
>>> items = {k: v for k, v in sorted(items.items(), reverse=True)}    
>>> items
{2: [10, 20, 0.5], 1: [5, 30, 0.16666666666666666]}

【讨论】:

  • 此解决方案不适用于这种情况 {1: [60, 20, 3.0], 2: [100, 50, 2.0], 3: [120, 30, 4.0]} 在 {k : v for k, v in sorted(items.items(), reverse=True)} 这就是我得到的 {3: [120, 30, 4.0], 2: [100, 50, 2.0], 1: [60 , 20, 3.0]}
  • 尝试使用自定义键调用sorted()key=lambda item: item[1][-1],其中[1] 表示(key, value) 元组的值,[-1] 访问数组的最后一项, 你说你想要排序
猜你喜欢
  • 2021-04-26
  • 2019-08-10
  • 1970-01-01
  • 2016-07-21
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多