当我试图更新列表的元素时,它会更新字典中每个列表中该索引处的所有值。
示例代码:
dit = {}
d = {}
ls = ['hhh','ew']
a = "hhh"
b = "ew"
j = 3
dit[a] = [1,2,3,4]
dit[b] = [5,6,7,8]
const = [0,2,3,4]
d = dict.fromkeys(dit.keys() ,const)
print(d)
for i in ls:
print(i)
d[i][0] = max(d[i][0], j)
print(d)
j += 1我得到的输出是:
{'hhh': [0, 2, 3, 4], 'ew': [0, 2, 3, 4]}
hhh
{'hhh': [3, 2, 3, 4], 'ew': [3, 2, 3, 4]}
ew
{'hhh': [4, 2, 3, 4], 'ew': [4, 2, 3, 4]}所需的输出为:
{'hhh': [0, 2, 3, 4], 'ew': [0, 2, 3, 4]}
hhh
{'hhh': [3, 2, 3, 4], 'ew': [0, 2, 3, 4]}
ew
{'hhh': [3, 2, 3, 4], 'ew': [4, 2, 3, 4]}发布于 2020-09-25 14:48:03
这是因为您在每个dict元素上分配了const本身。当您更新此列表时,它将更新其所有实例。在你的代码中改变这一点,它就会起作用:
d = dict.fromkeys(dit.keys() ,const)至
d = {i:const.copy() for i in dit.keys()}https://stackoverflow.com/questions/64059101
复制相似问题