我正在嘗試創建一個字典,而我的字典鍵不斷覆寫自己。我不明白我該如何處理這個問題。
這是腳本:
import MDAnalysis as mda
u = mda.Universe('rps5.prmtop', 'rps5.inpcrd')
ca = u.select_atoms('protein')
charges = ca.charges
atom_types = ca.names
resnames = ca.resnames
charge_dict = {}
for i in range(len(charges)):
#print(i 1 ,resnames[i], atom_types[i], charges[i])
charge_dict[resnames[i]] = {}
charge_dict[resnames[i]][atom_types[i]] = charges[i]
print(charge_dict)
該費用,atom_types和resnames都列出,與相同數量的元素。
我希望我的字典看起來像這樣:charge_dict[resname][atom_types] = 費用(例如,charge_dict['MET']['CA'] = 0.32198)。
你能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
沒有真正看到完整的問題描述,我的猜測是你的最終結果是每個charge_dict[name]都是只有一個鍵的字典。這不是因為鍵“覆寫自己”。您的程式會顯式覆寫它們:charge_dict[resnames[i]] = {}.
您想要的是僅在尚未設定的情況下重置該鍵的值。您可以通過首先測驗輕松做到這一點if resnames[i] not in charge_dict:,但 Python 標準庫提供了一種更簡單的機制:collections.defaultdict. Adefaultdict是具有關聯默認值創建者的字典。因此,您可以執行以下操作:
from collections import defaultdict
charge_dict = defaultdict(dict)
之后,您無需擔心初始化,charge_dict[name]因為當dict呼叫默認值函式 ( )時,一個新的字典會自動生成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383605.html
下一篇:如何在PEG語法中定義十進制數?
