Я хотел был бы иметь возможность получить доступ к данным из файла, организуя их в структуру, которая, я думаю, должна быть словарем списков словарей, из того, что я понимаю, возможно, похоже на следующее:Python Словарь списков словарей
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
, например (с помощью квадратных скобок, чтобы выбрать ключ словаря, а точка для требуемое значение вне скобок) знать значение b
P_2
, для A_3
в R_2
от KEY_1
, или ['ID_FILE']['KEY_1'].R_2
и получить список ['A_1', 'A_2' , 'A_3']
, то есть выбрать ключи Словаря, указывая, в конце концов, нужную информацию, чтобы получить конечный результат ...
структуры является довольно сложной, но концепция обобщению, и я бы понял, по какому методу, модулю python или лучшему подходу, я могу добиться этого в python; если это было бы предпочтительнее, чтобы начать с внешней стороны или изнутри, организовывать и объединять словари в уникальный большой словарь ...
Edit 1: То есть, использовать значение предыдущего ключа в качестве ключа для нового дополнительный словарь.
Редактировать 2: Исходный файл - это файл CIF, такой как this (это большой файл с 170925 строками). Учитывая, что СИФ файл, я анализируя линии, начиная с ATOM, разделив их в столбцы:
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
Так, например, чтобы получить координаты х (столбец 10) атома N (колонка 3) остатка 271 (столбец 8) цепи A (столбец 6), дайте такую команду ['4tvx'] ['A'] ['271'] ['N']. CoordX
Это не может быть объяснено с помощью * меньшего набора данных образца *? –
Правильно отредактируйте ваш вопрос. Мне стало скучно видеть это. – bluefoggy
Поиск атрибута типа 'd [ID_FILE] [KEY_1] [R_2] [A_3] [P_2]' не будет работать со всеми этими промежуточными списками (при условии, что эти имена представляют строки). –