我希望能够从文件中访问数据,将它们组织成一个我认为应该是字典列表的结构,从我的理解,可能如下所示:
ID_FILE = {
'KEY_1': [
{
'R_1': [
{
'A_1': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_2': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_3': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
]
}
],
'R_2': [
{
'A_1': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_2': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_3': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
]
}
],
'R_3': [
{
'A_1': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_2': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
],
'A_3': [
{
'P_1': ['a', 'b', 'c', 'd']
},
{
'P_2': ['a', 'b', 'c', 'd']
},
{
'P_3': ['a', 'b', 'c', 'd']
}
]
}
]
}
],
'KEY_2': [...as 'KEY_1'...],
'KEY_3': [...as 'KEY_1'...]
}
我不知道它是否理想正确,但实际上我可以使用['ID_FILE']['KEY_1']['R_2']['A_3']['P_2'].b
等命令访问字典数据(使用方括号选择字典&#39) ; s键,以及括号外所需值的点),以了解b
P_2
的{{1}}值A_3
R_2
KEY_1
['ID_FILE']['KEY_1'].R_2
,或['A_1', 'A_2' , 'A_3']
并获取列表KEY = column 6
R = column 8
A = column 3
P = Atom row = list of columns
a = column 1
b = column 2
c = column 3
d = column 4
,即选择字典的键,最后指示所需信息,以获得最终输出......
结构非常复杂,但概念是可推广的,我会通过什么方法,python模块或最佳方法来理解,我可以在python中实现这一点;如果首选从外部或从内部开始,组织和连接字典到独特的大词典...
编辑1:也就是说,使用上一个键的值作为新子词典的键。
编辑2:源文件是一个CIF文件,如this(它是一个170925行的大文件)。考虑到cif文件,我分析了以ATOM开头的行,将它们分成列:
{{1}}
因此,例如,为了获得链A(第6列)的残基271(第8列)的原子N(第3列)的x坐标(第10列),给出类似[' 4tvx& #39;] [' A'] [' 271'] [' N'。] coordX
答案 0 :(得分:0)
看起来你的架构并不理想(虽然很难在不了解你所存储的内容的情况下判断)。通过查看您的数据,KEY_1,R_1和A_1应该是字典而不是列表。通过简化结构,您将使用[ID_FILE] [KEY_1] [R_2] [A_3] [P_2] .b
答案 1 :(得分:0)
感谢Stephen Rumbalski向我表明这个工具PyCifRW,但是,回答我的主题问题,所需的结构是字典词典,以实现那个gool:
r_list = ['20', '21']
dictionary = {}
r_dict = {}
a_dict = {}
for r in range(0,len(r_list)):
r = r_list[r]
dictionary['C'] = r_dict
r_dict[r] = a_dict
print dictionary
print dictionary['C']
"""output:
{'C': {'20': {}, '21': {}}}
{'20': {}, '21': {}}
equal to:
dictionary = {'C': {
'20': {},
'21': {}
}
}
"""