我想要 simsec_0
中每个字符串的值,该值是通过用字典 monoisotopicaa_dict
> 中的 float 替换所有字符来计算的
peptides_report = {'simsec_0': ['CCYYK', 'TTSS']}
monoisotopicaa_dict = {"C":103.00919,"E":129.04259,"Q":128.05858, \
"K":128.09496,"M":131.04049,"F":147.06841, \
"S":87.03203,"T":101.04768,"W":186.07931,"Y":163.06333}
预期结果类似于
{'simsec_0':[['CCYYK',660.24], ['TTSS',376.15942]]}
所以我尝试编写函数CALC
,用字典中的 float 替换每个字符串p_v_each
def CALC(peptides_report, monoisotopicaa_dict):
for p_k, p_v in peptides_report.iteritems():
for p_v_each in p_v:
for mono_each in monoisotopicaa_dict.keys():
# May be replace with number and "+"
# string = p_v_each.replace(mono_each, monoisotopicaa_dict[mono_each])
xxx = CALC(peptides_report, monoisotopicaa_dict)
我应该如何处理字符串才能获取值并能够对它们求和?
最佳答案
您可以简单地使用字符串是字符集合这一事实,并通过理解提取 sum
中的值:
>>> values = {"C":103.00919,"E":129.04259,"Q":128.05858, \
... "K":128.09496,"M":131.04049,"F":147.06841, \
... "S":87.03203,"T":101.04768,"W":186.07931,"Y":163.06333}
>>> values
{'Q': 128.05858, 'C': 103.00919, 'E': 129.04259, 'T': 101.04768, 'W': 186.07931, 'F': 147.06841, 'Y': 163.06333, 'K': 128.09496, 'M': 131.04049, 'S': 87.03203}
>>> sum(values[l] for l in 'CCYYK')
660.2400000000001
>>> sum(values[l] for l in 'TTSS')
376.15942
>>> [sum(values[l] for l in word) for word in ['CCYYK', 'TTSS']]
[660.2400000000001, 376.15942]
将值放入字典中:
report = {'simsec_0': ['CCYYK', 'TTSS']}
monoisotopicaa = {"C":103.00919,"E":129.04259,"Q":128.05858, \
"K":128.09496,"M":131.04049,"F":147.06841, \
"S":87.03203,"T":101.04768,"W":186.07931,"Y":163.06333}
def value(word):
return sum(monoisotopicaa[l] for l in word)
{k:[[w, value(w)] for w in v] for k,v in report.items()}
# {'simsec_0': [['CCYYK', 660.2400000000001], ['TTSS', 376.15942]]}
关于python - 将字符串中的每个字符替换为字典中的 float ,并将所有替换值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376325/