在字典中查找特定键和相应的值

2024-06-16 11:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了以下代码:

def all_di(fl):
    dmm = {}
    for k in range(2):
        for i in fl:
            for m in range (len(i)-1):
                temp = i[m:m+k+1]
                if temp in dmm:
                    dmm[temp] += 1.0
                else:
                    dmm[temp] = 1.0
##  return dmm
    p = raw_input("Enter a 2 AA long seq:")
    sum = 0
    for x,y in dmm.iteritems():
        if x == p:
            n1 = y
    for l,m in dmm.iteritems():
        if l[0] == p[0]:
            sum = sum + m
    print float(n1)/float(sum)

all_di(inh) 

如果inh={'VE':16,'GF':19,'VF':23,'GG' :2}

代码的工作原理如下:

Enter a 2 AA long seq: VE

结果将是=16/(16+23)=0.41

工作原理:该函数在字典dmm中搜索与在input中输入的键类似的键(这里的示例是“VE”)。它存储其值,然后搜索所有具有共同的第一个字母的键值对,将其所有值相加并返回一个分数。你知道吗

VE = 16
**V**E + **V**F = 39
= 16/39 = 0.41

我想要的:保持函数完好无损,我想要有一个二级字典,它对字典中的每个键值对进行迭代,并将它的分数值存储在不同的字典中,这样:

new_dict = {'VE' : 0.41, 'GF':0.90,'VF':0.51, 'GG': 0.09}

我不想删除print语句,因为它是我的程序的输出。不过,我需要new_dict来做进一步的工作。你知道吗


Tags: 代码inforinputif字典verange
1条回答
网友
1楼 · 发布于 2024-06-16 11:46:05
def all_di(fl,p=0):
  dmm = {}
  interactive = p == 0
  if interactive:
    p = raw_input("Enter a 2 AA long seq:")
  if p in fl: 
    numer = fl[p]
    denom = 0.0 
    for t in fl: 
      if t[0] == p[0]:
        denom = denom + fl[t]
  if interactive:
    print numer / denom
  return numer / denom

inh = {'VE':16,'GF':19,'VF':23,'GG' :2} 
all_di(inh)
new_dict =  {x:all_di(inh, x) for x in inh}
print new_dict

相关问题 更多 >