gpt4 book ai didi

python - 条件时从嵌套列表字典返回对象(python)

转载 作者:行者123 更新时间:2023-11-28 18:48:50 26 4
gpt4 key购买 nike

我有一本看起来像这样的字典:

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]]}

所有 objs 都是相同形状的 ndarrays,并且有一个函数 f() 返回一个 x,它是一个 float ,即: 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

非常感谢您的帮助和评论。

最佳答案

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

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

您的代码已经很接近了!

关于python - 条件时从嵌套列表字典返回对象(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16212109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com