【问题标题】:How to sort array by highest number如何按最大数字对数组进行排序
【发布时间】:2020-01-16 17:46:42
【问题描述】:
arraydata = [
     ["bob", 56],
     ["Jan", 12],
     ["Foo", -83]
]

我想通过最高数字显示来获取姓名和号码。

output:
bob
56

我试图打印(max(arraydata))

但这没有用。有什么建议么? 我正在使用python

【问题讨论】:

标签: python list


【解决方案1】:

你可以在 pythons 的max 中使用key

max(arraydata, key=lambda x: x[1])
#['bob', 56]

请注意,通过提供 max 整个嵌套列表,第一个排序标准将是子列表中的第一个元素,因此排序将是字典顺序的。

这就是为什么bob 排在第一位的原因(也很巧合):

max(arraydata)
# ['bob', 56]

解释如下:

[ord(i[0]) for i in ["bob", "Jan", "Foo"]]
# [98, 74, 70]

【讨论】:

    【解决方案2】:

    如果你只想要最高的,你可以做到:

    max(arraydata, key=lambda x: x[1])
    #['bob', 56]
    

    如果需要几个top,也可以排序:

    sorted(arraydata, key=lambda x: x[1], reverse=True)
    #[['bob', 56], ['Jan', 12], ['Foo', -83]]
    

    【讨论】:

      【解决方案3】:

      yata 回答是可以的,但是如果你想按最大数对数组数据列表进行排序,试试这个:

      from operator import itemgetter
      a.sort(key=itemgetter(1), reverse=True)
      print(a[0])
      #['bob', 56]
      

      如果您使用反向 True,则最高数字始终位于零索引上。

      【讨论】:

        猜你喜欢
        • 2020-09-26
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 2020-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多