我有一本看起来像这样的字典:
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 都是相同形状的 ndarray,并且有一个函数 f(),它返回一个 x ,它是一个浮点数,即:obj_0_0.f() --> x_0_0
我想提取一个字典,其中包含 descrp 和 obj 及其各自的键,其中 obj.f() (即 x)对于每个键中的值是最小值(在 N 个键的 myD 范围内,N 个项目的形状为 [descrp ,对象]):
结果必须类似于:
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 ?
感谢您的帮助和评论。