定义一个函数,从一个字符串创建一个新字典

2024-05-16 12:57:19 发布

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

我有一个关于一种新的化学物质的PDB格式代码,叫做“new\ mol”:

new_mol= """
ATOM     45  C  BARG A  -3      12.759  86.530  96.365  0.50 36.39     C
ATOM     46  O  BARG A  -3      12.924  87.757  96.420  0.50 37.26     O
ATOM     47  CB BARG A  -3      13.428  85.746  93.980  0.50 36.60     C
ATOM     48  CG BARG A  -3      12.866  85.172  92.651  0.50 37.31     C
ATOM     49  CD BARG A  -3      13.374  85.886  91.406  0.50 37.66     C
ATOM     50  NE BARG A  -3      12.644  85.487  90.195  0.50 38.24     N
ATOM     51  CZ BARG A  -3      13.114  85.582  88.947  0.50 39.55     C
ATOM     52  NH1BARG A  -3      14.338  86.056  88.706  0.50 40.23     N

"""
import os

其中每行的最后一个字母是原子符号。你知道吗

我想定义一个函数

def count_atom(new_mol):
num_atoms = dict()

创建字典以获得以下结果:

#num_atoms = {'C':5, 'O':1; 'N':2}

因此,我想在Python中创建一个字典,它显示新变量的每个原子的总数。你知道吗

事先谢谢你的帮助。你知道吗


Tags: 代码new字典格式cdcgnumpdb
2条回答

这是代码,你可以根据你的要求使用。期望的结果是结果变量

new_mol= """
ATOM     45  C  BARG A  -3      12.759  86.530  96.365  0.50 36.39     C
ATOM     46  O  BARG A  -3      12.924  87.757  96.420  0.50 37.26     O
ATOM     47  CB BARG A  -3      13.428  85.746  93.980  0.50 36.60     C
ATOM     48  CG BARG A  -3      12.866  85.172  92.651  0.50 37.31     C
ATOM     49  CD BARG A  -3      13.374  85.886  91.406  0.50 37.66     C
ATOM     50  NE BARG A  -3      12.644  85.487  90.195  0.50 38.24     N
ATOM     51  CZ BARG A  -3      13.114  85.582  88.947  0.50 39.55     C
ATOM     52  NH1BARG A  -3      14.338  86.056  88.706  0.50 40.23     N

"""
list_of_string = new_mol.split('ATOM')
result_dict = {}
for string in list_of_string:
    chamical_info = string.strip()
    if chamical_info:
        print chamical_info[-1]
        if result_dict.has_key(chamical_info[-1]):
            result_dict[chamical_info[-1]] = result_dict[chamical_info[-1]] + 1
        else:
            result_dict[chamical_info[-1]] = 1


print result_dict

在模块集合中有一个类计数器可以很好地实现这一点。当你有一个原子列表时,你只需要用Counter(atoms)创建一个计数器,就可以得到想要的结果。你知道吗

from collections import Counter

new_mol= """
ATOM     45  C  BARG A  -3      12.759  86.530  96.365  0.50 36.39     C
ATOM     46  O  BARG A  -3      12.924  87.757  96.420  0.50 37.26     O
ATOM     47  CB BARG A  -3      13.428  85.746  93.980  0.50 36.60     C
ATOM     48  CG BARG A  -3      12.866  85.172  92.651  0.50 37.31     C
ATOM     49  CD BARG A  -3      13.374  85.886  91.406  0.50 37.66     C
ATOM     50  NE BARG A  -3      12.644  85.487  90.195  0.50 38.24     N
ATOM     51  CZ BARG A  -3      13.114  85.582  88.947  0.50 39.55     C
ATOM     52  NH1BARG A  -3      14.338  86.056  88.706  0.50 40.23     N
"""

atoms = [line.split()[-1] for line in new_mol.splitlines() if line.startswith('ATOM')]
atom_count = Counter(atoms)

相关问题 更多 >