我还是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]不会超过最短列表的大小