[英]How to return values in dictionary?
def consensus(seqs):
>>> profiel(seqs)
{'A': [0, 3, 1, 2, 3, 4, 0, 3], 'C': [0, 4, 3, 1, 0, 0, 5, 1], 'T': [3, 0, 1, 2, 4, 3, 1, 1], 'G': [4, 0, 2, 2, 0, 0, 1, 2]}
>>> consensus(profiel(seqs))
'GCCNTACA'
当列表中的数字最大时,如何返回字典的键? 所以第一个是G
因为
A = 0 , C = 0, T = 3, G = 4
等等。
首先,您可以使用 max 函数的key
关键字( 使用 'key' 和 lambda 表达式的 python max 函数)。 然后,您可以使用生成器表达式遍历列表并将其连接成一个字符串。
dic = {'A': [0, 3, 1, 2, 3, 4, 0, 3], 'C': [0, 4, 3, 1, 0, 0, 5, 1], 'T': [3, 0, 1, 2, 4, 3, 1, 1], 'G': [4, 0, 2, 2, 0, 0, 1, 2]}
''.join(max(dic, key=lambda v: dic[v][i]) for i in xrange(len(dic['A'])))
### 'GCCATACA'
请注意,这仅在所有列表具有相同数量的元素时才有效。
要选择具有最大值的键,请使用此
max(dict, key=dict.get)
这将完成工作,列表中具有最高值的键:
mydict = {'A': [0, 3, 1, 2, 3, 4, 0, 3], 'C': [0, 4, 3, 1, 0, 0, 5, 1], 'T': [3, 0, 1, 2, 4, 3, 1, 1], 'G': [4, 0, 2, 2, 0, 0, 1, 2]}
def getKeyBigger(d);
key,_ = reduce(lambda x, y: x if max(x[1]) > max(y[1]) else y, d.items())
return key
>>>print getKeyBigger(mydict)
>>>C
def return_max(dic):
maxnum = max(i[0] for i in dic.values())
for i in dic.iteritems():
if maxnum == i[1][0]:
return i[0]
dic = {'A': [0, 3, 1, 2, 3, 4, 0, 3], 'C': [0, 4, 3, 1, 0, 0, 5, 1], 'T': [3, 0, 1, 2, 4, 3, 1, 1], 'G': [4, 0, 2, 2, 0, 0, 1, 2]}
print return_max(dic)
输出:
G
基于 zetsys 解决方案,这是一个(丑陋的)单衬:
"".join([max(d, key={k: v[x] for k, v in d.items()}.get) for x in xrange(len(d.values()[0]))]
它假设每个列表都具有相同的长度。 (并且 d 是您的输入字典)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.