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

问题描述

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

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

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

谢谢。

编辑: - 嘿伙计们,感谢您为我完成任务提供的所有建议。

解决方法

您可以使用以下内容:

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

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

假设您的数据在字典中(并命名为 var isEqualsJson = (obj1,obj2)=>{ keys1 = Object.keys(obj1); keys2 = Object.keys(obj2); //return true when the two json has same length and all the properties has same value key by key return keys1.length === keys2.length && Object.keys(obj1).every(key=>obj1[key]==obj2[key]); } var obj1 = {a:1,b:2,c:3}; var obj2 = {a:1,c:3}; console.log("json is equals: "+ isEqualsJson(obj1,obj2)); alert("json is equals: "+ isEqualsJson(obj1,obj2));),您可以尝试:

d

输出:

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

像这样:

>>> 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,... 'B': [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','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] 不会超出最短列表的大小。