我有这样的代码:
list_of_trees = list(range(50, 450, 50))
results_list = [2*trees for trees in list_of_trees]
results_my = {}
for trees in list_of_trees:
for result in results_list:
results_my[trees] = result
break
print(results_my)
>> {50: 100, 100: 100, 150: 100, 200: 100, 250: 100, 300: 100, 350: 100, 400: 100}
为什么results_my
字典中list_of_trees
中的每个数字都有100 ?我知道使用zip()函数将两个列表组合成一个字典的更好方法。但是我不明白为什么这个代码总是给results_my
字典分配100。有人能一步一步地解释我这个代码是如何在results_my
字典中赋值的吗?
for _ in some_iterator:
x = 1
break
当这种情况发生时,只进行一次迭代,即只对第一个元素进行迭代,其余部分被忽略。你的情况也一样。
您可能希望对键和值使用相同的索引元素。
这是你想要达到的目标的解决方案:
list_of_trees = list(range(50, 450, 50))
results_list = [2*trees for trees in list_of_trees]
results_my = {}
for trees, result in zip(list_of_trees, results_list):
results_my[trees] = result
您是否需要列表list_of_trees和results_list用于任何其他目的?如果没有,您可以使用字典推导式:
results_my = {x : 2 * x for x in range(50, 450, 50)}
print(results_my)
如果您确实需要它们,请使用字典构造函数:
results_my = dict(zip(list_of_trees, results_list))
print(results_my)