【问题标题】:Find key value of python list for use with other arrays查找 python 列表的键值以与其他数组一起使用
【发布时间】:2013-01-16 05:03:38
【问题描述】:

我目前正在开发一个 python 程序,该程序使用 3 个不同的数组进行大量计算。每个键的数组值(即i[1]a[1] 相关,a[1] 也与q[1] 相关。

我试图找出q 的哪个值最高(我使用的是python 的q.max() 函数),但我不知道如何找出该最大值的键值。 IE。如果最大值是q[67] 并且等于111110029233,我将如何获得[67] 值,以便我可以使用该键在i 列表和a 列表中查找相应的值。

【问题讨论】:

  • 如果列表的值是相关的,我更喜欢使用l = [(i[0], a[0], q[0]), ..., (i[n], a[n], q[n])] 之类的东西,然后使用max(l, key=lambda x: x[2]) 来获取最高值为q 的元组
  • 这只会将所有键设置为与整个数组相关,对吗?抱歉,请确保我理解
  • 嗯,我不确定我是否理解您的问题。这是构造数据的另一种方式,其中列表中的每个元组都包含iaq 的相应值。您可以使用l = zip(i, a, q) 创建此结构
  • 最终我会为一个更大的物理方程这样做,其中iaq 是方程中的一部分。我需要使用不同的值(ai)多次运行大型方程并将其响应存储在q 中。然后我试图找出q 的值(或方程式的答案最大)并显示ai 的值用于获得该值。

标签: python arrays python-2.7


【解决方案1】:
>>> q = [1,2,3,4,5,6,5,4,3,2,1]
>>> q.index(max(q))
5

【讨论】:

    【解决方案2】:

    试试这个:

    import operator
    max(enumerate(q),key=operator.itemgetter(1))[0]
    

    【讨论】:

      【解决方案3】:

      max 不会返回索引,要找到它,您必须像这样遍历列表:

      q = [1,2,3,4,5,6,5,4,3,2,1]
      
      def find_max(li):
          max_item = max(li)
          return (li.index(max_item), max_item)
      
      print find_max(q)
      

      然后您可以使用返回值中的第一个元素来访问列表中的相关元素。

      或者,如果您只想要可以使用的索引:

      q.index(max(q))
      

      This Stack overflow Answer 中的回答

      【讨论】:

      • 完美!谢谢,我试图搜索并没有看到。对不起。
      【解决方案4】:
      q = [1,2,3,4,5,100,-1,0]
      index = max(enumerate(q), key=lambda x: x[1])[0]
      

      【讨论】:

        【解决方案5】:

        听起来您的最终目标是找到产生最大q 值的ai 值。目前您正在尝试查找该最大值q 的索引,以便您可以使用它来访问ia 中的相应值,但我认为以不同的方式进行处理会更有效。

        max_q, max_i, max_a = max(zip(q, i, a))
        

        这会找到最大的 q 值以及对应的 ia 值。以下是它的工作原理:

        首先,zip 函数从每个列表中构造一个匹配值元组的生成器(或列表,如果您使用的是 Python 2)。也就是说,它产生(q[0], i[0], a[0]),然后是(q[1], i[1], a[1]),依此类推。

        然后max 函数将比较元组,使用第一个值(来自q)作为最重要的部分。如果q 中有唯一的最大值,那就是它。如果最大值相同,我在上面编写的代码将优先选择具有最高 i 值的代码,如果相同,则选择具有最高 a 值的代码。

        最后,它将最大元组解压缩为 max_qmax_imax_a 变量,以便您可以单独使用它们。

        【讨论】:

          猜你喜欢
          • 2011-02-11
          • 2016-07-24
          • 1970-01-01
          • 2021-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-04
          • 2020-10-21
          相关资源
          最近更新 更多