【发布时间】:2019-09-17 01:03:22
【问题描述】:
我在使用相同的键在嵌套字典中添加值时遇到问题,并且值始终显示相同的值,事实是,我想更新键相同的值事件。该算法是人工鱼群算法的基础
# example >> fish_template = {0:{'weight':3.1,'visual':2,'step':1},1:'weight':3,'visual':4,'step':2}}
fish = {}
fish_value = {}
weight = [3.1, 3, 4.1, 10]
visual = [2, 4, 10, 3]
step = [1, 2, 5, 1.5]
len_fish = 4
for i in range(0,len_fish):
for w, v, s in zip(weight, visual, step):
fish_value["weight"] = w
fish_value["visual"] = v
fish_value["step"] = s
fish[i] = fish_value
print("show fish",fish)
我希望结果类似于fish_template,但事实并非如此。 'weight'、'visual'、'step' 键的值与 0、1、2 和 3 的值始终相同。有解决方案吗?
【问题讨论】:
-
因为别名;
fish[i] = fish_value行是不好的做法,fish_value会被覆盖。但实际上,您可以通过 dict 理解来避免循环。无论如何,更好的编码实践是声明你自己的Fish具有权重、视觉、步骤成员的类。 -
@smci,好的,所以最好创建类或对象来获取每个循环的值,感谢您的建议
标签: python-3.x list dictionary optimization swarm