【问题标题】:How to print the key of highest value from the list's element of the dictionary?如何从字典的列表元素中打印最高值的键?
【发布时间】:2021-04-02 03:58:16
【问题描述】:

我还是 python 新手,所以如果我的问题令人困惑,请提前道歉。 我有这个

A  :  [5, 1, 0, 0, 5, 5, 0]
C  :  [0, 1, 1, 2, 1, 0, 2]
G  :  [0, 3, 2, 1, 0, 1, 2]
T  :  [1, 0, 2, 0, 0, 0, 1]

字典。我想打印列表中最大值的 key。 例如:- 从列表的第一个元素,即 5,0,0,1 A 具有我想要打印 A 的最高值,然后是第二个位置的 G,依此类推。

谢谢。

已编辑:-大家好,感谢您的所有建议,我能够完成任务。

【问题讨论】:

  • 嘿尼基尔!你能告诉我们你到目前为止所做的尝试吗?当有两个最大数量相同的条目时,期望的行为是什么?
  • 实际上我正在尝试解决 Rosalind 的生物信息学问题。当前的问题需要我从给定的序列中找到一个共有序列。

标签: python dictionary bioinformatics consensus


【解决方案1】:

您可以使用以下内容:

d = {"A": [5, 1, 0, 0, 5, 5, 0],
     "C": [0, 1, 1, 2, 1, 0, 2],
     "G": [0, 3, 2, 1, 0, 1, 2],
     "T": [1, 0, 2, 0, 0, 0, 1]}

maxes = [max(d, key=lambda k: d[k][i]) for i in range(len(list(d.values())[0]))]
# ['A', 'G', 'G', 'C', 'A', 'A', 'C']

【讨论】:

    【解决方案2】:

    假设您的数据在字典中(并且命名为d),您可以尝试:

    maxkey = max(d.items(), key=lambda x: max(x[1]))[0]
    print(maxkey)
    

    输出:

    A
    

    【讨论】:

      【解决方案3】:

      类似这样的:

      >>> def f(di, index):
      ...     max = None
      ...     for key in di:
      ...             if index >= len(di[key]):
      ...                     continue
      ...             if max is None or di[max][index] < di[key][index]:
      ...                     max = key
      ...     return max
      >>> di = {'A': [5, 1, 0, 0, 5, 5, 0],
      ... 'B': [0, 1, 1, 2, 1, 0, 2]}
      >>> f(di, 0)
      'A'
      >>> f(di, 3)
      'B'
      

      【讨论】:

        【解决方案4】:

        对于每个索引(0 到 6),获取在该索引处具有最大值的键。这可以在列表理解中完成:

        [ max(d,key=lambda k:d[k][i]) for i in range(7)] 
        
        ['A', 'G', 'G', 'C', 'A', 'A', 'C']
        

        如果你的字典中有不同的列表大小或者你事先不知道列表的长度,你可以先使用 min 函数来获取:

        minLen     = min(map(len,d.values()))
        maxLetters = [ max(d,key=lambda k:d[k][i]) for i in range(minLen)]
        

        您需要使用 min() 以确保 d[k][i] 不会超出最短列表的大小。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多