如何在字典中返回值?

时间:2015-11-18 10:55:27

标签: python 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

等等。

5 个答案:

答案 0 :(得分:1)

首先,您可以使用max函数的key关键字(python max function using 'key' and lambda expression)。然后,您可以使用生成器表达式迭代列表并将其连接到字符串中。

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'

请注意,这仅适用于所有列表具有相同数量的元素的情况。

答案 1 :(得分:0)

要选择具有最大值的键,请使用此

max(dict, key=dict.get)

答案 2 :(得分:0)

这将完成作业,具有最高值的列表的键:

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

基于zetsys解决方案,这是一个(丑陋的)一个班轮:

"".join([max(d, key={k: v[x] for k, v in d.items()}.get) for x in xrange(len(d.values()[0]))]

假设每个列表具有相同的长度。 (和d是你的输入词典)