Я видел похожие посты об удалении / фильтрации определенных ключей из defaultdict, но все такие опции фактически не удаляют пару пустых значений и ключей, а просто создают новый словарь без них.Делая это, я не смогу получить доступ к элементам чистого defaultdict.
Вот подробности моей проблемы:
Я пытаюсь прочитать несколько молекул из списка, так чтоЯ могу получить доступ к их различным свойствам, перечисленным в их отдельных файлах.Я начинаю с индексации атомов в каждой молекуле;в качестве ключей и затем добавление атомного номера соответствующего атома в качестве значений.Чтобы добиться этого, я использую defaultdict (список) Python, чтобы избежать KeyError.
element_list = [1, 6, 7, 8, 9, 15, 16, 17, 35, 53]
element_indices = defaultdict(list)
counter = 0
XX = [some array]
for atm in m.GetAtoms():
aid = atm.GetIdx()
do multiple things.......
element_indices[atm.GetAtomicNum()].append(counter)
counter += 1
for element in element_list:
XX = np.array([X[i] for i in element_indices[element]])
print name, ":", element, (element_indices[element])
printing result :
11bpo : 1 [1, 4, 6, 8, 10, 12]
11bpo : 6 [0, 3, 5, 7, 9, 11]
11bpo : 7 [2, 13]
11bpo : 8 []
11bpo : 9 []
11bpo : 15 []
11bpo : 16 []
11bpo : 17 []
11bpo : 35 []
11bpo : 53 []
Так как эта молекула не имеет Cl, Br, I или O, значения для нее равны [].Я хочу удалить все такие случаи.
PS: новичок в Python, и это мой первый пост в StackOverflow!Спасибо