我有一個字典,看起來像:返回對象時的條件(蟒)
myD={'key_0':[[['descrp_0_0'],Obj_0_0],.....,[['descrp_0_N'],obj_0_N]]
,.....,
'key_N':[[['descrp_N_0'],Obj_N_0],.....,[['descrp_N_N'],obj_N_N]]}
所有OBJ文件具有相同的形狀的ndarrays和具有函數f()返回的x這是一個浮即: obj_0_0.f() - > x_0_0
我想提取與descrp和OBJ以及它們各自的鍵,其中obj.f()(即x)爲最小的值的字典在每個密鑰中(在N個密鑰的myD範圍中將給出N個項目,形狀爲[descrp,obj]):
結果必須是這個樣子:
resD = {'key_0':[[descrp_0_min],obj_0_min],
.....,
'key_N':[[descrp_N_min],obj_0_min]}
喜歡的東西:
minXs = [min([item[-1].f() for item in v]) for k,v in myD.iteritems()]
minObjs = [item for k,v in myD.iteritems() for item in v if item[-1].get_potential_energy() == minXs[myD.keys().index(k)]]
resultList = zip(myD.keys(),minObjs)
resultDict = dict()
for i in resultList:
resultDict[i[0]]=i[1]
雖然它的工作原理,但相當麻煩,我想一定要做到這一點更簡單的方法。或者,也許我應該使用numpy.ndarray爲此目的?
我感謝您的幫助和評論。
你的字典是否在每個值的開頭都缺少一個'[''字符?也就是說,key_0對應整個列表[[['descrp_0_0'],Obj_0_0],.....,[['descrp_0_N'],obj_0_N]]'(注意額外的'['我已經添加了),還是隻是第一個項目? – Blckknght 2013-04-25 11:21:47
它對應於整個列表。你所說的額外括號是需要的,所以我編輯了它。謝謝 – ARaf 2013-04-25 14:40:11