python - 将字符串中的每个字符替换为字典中的 float ,并将所有替换值相加

标签 python python-2.7 dictionary

我想要 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/

相关文章:

ios - 字典是 Xcode 中的假定集合(数组)吗?

Python 日志行未保留

c++ - 如何使用 C++ 的字节码优化来初始化嵌入式 Python 解释器?

python - 如何迭代列表中的每个元素并将其与另一个元素相加以找到一个数字?

python - 增量求和 Python 2.7 中的数字列表

arrays - Swift:将字符串中的单独字符与字典中的值匹配

dictionary - Delphi中TObjectDictionary如何管理内存

python - 安装 sklearn_pandas 包时出现问题

python - 使用python读取jpeg的EXIF数据

python - Tensorflow TFRecordDataset.map 错误