嵌套列表字典中满足条件的所选对象返回 (PYTHON)

2024-09-25 18:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典看起来像:

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公司为了这个目的?你知道吗

我感谢你的帮助和评论。你知道吗


Tags: keyinobjfor字典keysminitem
1条回答
网友
1楼 · 发布于 2024-09-25 18:26:18

如果我正确理解了数据的结构,我想您可以通过调用内置的min函数并给它一个key函数的字典理解来解决这个问题。你知道吗

results = {key: min(values, key=lambda x:x[-1].f())
           for key, values in myD.iteritems()}

你的代码已经很接近了!你知道吗

相关问题 更多 >