簡體   English   中英

從python defaultdict(list)過濾/刪除不存在的鍵的值?

[英]filter/remove values for non existent keys from python defaultdict(list)?

我已經看到過類似的文章,涉及從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,因此其值為[]。 我想刪除所有此類情況。

PS:Python的新手,這是我關於StackOverflow的第一篇文章! 謝謝

只需要做:

for element in element_list:
    if element in element_indices:

這將忽略每個分子中實際上不存在的所有鍵值對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM