【问题标题】:How to sort a dictionary based on values with tuple如何使用元组根据值对字典进行排序
【发布时间】:2018-01-05 07:06:51
【问题描述】:

这里有像

这样的字典
d_ = {"k3":(2,3), "k1":(4,5), "k5":(8,9), "k2":(6,8), "k4":(2,7)}

我必须根据元组中第一个值的降序对其进行排序。 我正在这样做:

 sorted(d_.items(), key=d_.get(1) , reverse=True)

但我得到了这个:

[('k5', (8, 9)), ('k4', (2, 7)), ('k3', (2, 3)), ('k2', (6, 8)), ('k1', (4, 5))]

输出应如下所示:

[("k5",(8,9)),("k2",(6,8)),("k1",(4,5)),("k3",(2,3)),("k4",(2,7))] 

【问题讨论】:

  • 请考虑添加代码示例,或修改您在此问题中发布的示例。就目前而言,它的格式和范围使我们很难为您提供帮助;这是一个great resource,可以帮助您开始。祝你的代码好运!

标签: python python-3.x sorting dictionary


【解决方案1】:

你可以试试:

>>> [(k, d_.get(k)) for k in sorted(d_, key=d_.get, reverse=True)]
[('k5', (8, 9)), ('k2', (6, 8)), ('k1', (4, 5)), ('k4', (2, 7)), ('k3', (2, 3))]

注意:此答案的最后两个元素与 OP 给出的示例答案交换。

【讨论】:

    【解决方案2】:

    像这样简单的东西也可以工作:

    >>> d_ = {"k3":(2,3), "k1":(4,5), "k5":(8,9), "k2":(6,8), "k4":(2,7)}
    >>> sorted(d_.items(), key = lambda x : -x[1][0])
    [('k5', (8, 9)), ('k2', (6, 8)), ('k1', (4, 5)), ('k3', (2, 3)), ('k4', (2, 7))]
    

    【讨论】:

      猜你喜欢
      • 2020-01-03
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2014-07-13
      相关资源
      最近更新 更多