我有一本字典看起来像:
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都是相同形状的数组,都有一个函数f(),它返回一个x,x是一个浮点数,即: 对象0\u 0.f()-->;x\u 0\u 0
我想用descrp和obj以及它们各自的键提取一个字典,其中obj.f()(即x)是每个键中值的最小值(在myD范围内,N个键将给出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公司为了这个目的?你知道吗
我感谢你的帮助和评论。你知道吗
如果我正确理解了数据的结构,我想您可以通过调用内置的
min
函数并给它一个key
函数的字典理解来解决这个问题。你知道吗你的代码已经很接近了!你知道吗
相关问题 更多 >
编程相关推荐