是的
x = 1
,然后你马上
for x in d2.values()
.这会覆盖
x
每一个元素
d2.values()
.如果你想从第二项开始
d2。价值观()
,需要创建迭代器并跳过第一个值:
d2_iter = iter(d2.values())
next(d2_iter) # Consume one element
for item in d2_iter: # Iterate over the remaining iterator
# Do what you want here.
另一个问题是附加
整个列表
到
每一个价值
在里面
d2
.不要那样做。改用
zip()
遍历列表列表和中的值
d2
同时
d2_iter = iter(d2.values())
next(d2_iter) # Consume one element
for item_from_dict, item_to_append in zip(d2_iter, list_of_lists):
item_from_dict.append(item_to_append)
这就给你留下了:
{'Youngstown': ['OH', 4110, 8065, 115436],
'Yankton': ['SD', 4288, 9739, 12011, [966]],
'Yakima': ['WA', 4660, 12051, 49826, [1513, 2410]]}
请注意,像这样的附加只起作用,因为列表是可变的。如果有一个不可变的类型,比如元组,作为
d2
,则必须创建一个新元组并将其分配给键:
d3 = {'Youngstown': ('OH', 4110, 8065, 115436), 'Yankton': ('SD', 4288, 9739, 12011), 'Yakima': ('WA', 4660, 12051, 49826)}
d3_iter = iter(d2.keys())
next(d3_iter) # Consume one element
for key_from_dict, item_to_append in zip(d3_iter, list_of_lists):
new_item = d3[key_from_dict] + (item_to_append,) # Create a new item
d3[key_from_dict] = new_item
你会得到
{'Youngstown': ('OH', 4110, 8065, 115436),
'Yankton': ('SD', 4288, 9739, 12011, [966]),
'Yakima': ('WA', 4660, 12051, 49826, [1513, 2410])}