[英]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.