给定一本这样结构的词典:
{'guy1_arm_param1':23.0, 'guy1_arm_param2_low':2.0, 'guy1_arm_param2_high':3.0, 'guy1_arm_param3':20.0,
'guy1_leg_param1':40.0, 'guy1_leg_param2_low':2.0, 'guy1_leg_param2_high':3.0, 'guy1_leg_param3':20.0,
'guy2_arm_param1':23.0, 'guy2_arm_param2_low':2.0, 'guy2_arm_param2_high':3.0, 'guy2_arm_param3':20.0,
'guy2_leg_param1':40.0, 'guy2_leg_param2_low':2.0, 'guy2_leg_param2_high':3.0, 'guy2_leg_param3':20.0,
'another_guy_param1':3.0}
做一个函数最有效的方法是什么?它将遍历并提取给定“guy”的参数,然后用它们进行计算? 例如:
def full_guy_function(given_dict, guy):
d = unflatten(given_dict)
guy_functions = list()
guy_dict = {}
for body_part in d[guy].keys():
param1 = d[guy][body_part]['param1']
param3 = d[guy][body_part]['param3']
for k, v in d[guy][body_part]['param2'].iteritems():
guy_functions.append(get_function_for_part(param1, v, param3))
full_guy_function = sum(guy_functions)
return full_guy_function
def get_function_for_part(param1, param2, param3):
x = [x for x in range(0,100)]
x = numpy.array(x)
return param3**(x*param1/param2)
# http://stackoverflow.com/questions/6037503/python-unflatten-dict
def unflatten(dictionary):
resultDict = dict()
for key, value in dictionary.iteritems():
parts = key.split('_')
d = resultDict
for part in parts[:-1]:
if part not in d:
d[part] = dict()
d = d[part]
d[parts[-1]] = value
return resultDict
我觉得翻阅和制作其他字典等都是非常低效的。(这是一个很大的主字典,每隔几毫秒就会调用一次此函数。) 我尝试使用更容易理解的对象来实现这一点,但是层次对象不能从不同的进程读取,而不是从正在使用和写入它们的进程读取。所以,我一直在努力制作这样一个巨大的扁平字典,并计算过程两边的结果。你知道吗
如果这种类型的操作必须每隔几毫秒对大型数据集执行一次,那么使用数据库是否更好?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐