簡體   English   中英

在字典中找到特定的鍵和相應的值

[英]Locating specific keys and corresponding values in dictionary

我編寫了以下代碼:

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進行進一步的工作。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM