【发布时间】:2018-10-25 17:09:25
【问题描述】:
我看到过关于从 defaultdict 中删除/过滤特定键的类似帖子,但是所有这些选项实际上并没有删除空值键对,而只是创建一个没有它们的新字典。这样做,我将无法访问更干净的 defaultdict 的项目。
以下是我的问题的详细信息:
我正在尝试从一个列表中读取多个分子,以便我可以访问它们各自文件中列出的各种属性。我从索引每个分子中的原子开始;作为键,然后附加相应原子的原子序数作为值。为此,我使用 Python 的 defaultdict(list) 来避免 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,因此其值为 []。我想删除所有此类事件。
P.S:Python 新手,这是我在 StackOverflow 上的第一篇文章! 谢谢
【问题讨论】:
标签: python defaultdict