如何从字典的列表元素中打印最高值的键?



我还是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]

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

谢谢。

编辑:-嘿,伙计们,谢谢你们的建议,我完成了任务。

您可以使用以下内容:

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']

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

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

输出:

A

类似这样的东西:

>>> 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'

对于每个索引(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]不会超过最短列表的大小

相关内容

  • 没有找到相关文章

最新更新