问题描述
我还是 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] 不会超出最短列表的大小。