【发布时间】:2019-10-08 23:25:48
【问题描述】:
我正在尝试创建一个字典(sums),其键是列表的总和,值是列表本身。此列表具有不同数量的元素,但名称相同。每次更改列表的元素并将此更改的列表(相同名称)分配给不同的键时,先前分配给键的值也会更改。
在寻找合适的答案时,我从这里 (https://stackoverflow.com/a/52806573/7198441) 了解到,这可能是因为 Python 也引用了列表(如果我在这里出错,请纠正我)。现在,我想知道,是否有一种方法可以将具有相同名称但在不同迭代阶段的不同元素的列表分配给同一字典的不同键。
l = [1, 2, 3, 4, 5]
sums = {}
while len(l) :
l_sum = sum(l)
sums[l_sum] = l
print(sums)
print()
l.pop()
实际结果:
{15: [1, 2, 3, 4, 5]}
{15: [1, 2, 3, 4], 10: [1, 2, 3, 4]}
{15: [1, 2, 3], 10: [1, 2, 3], 6: [1, 2, 3]}
{15: [1, 2], 10: [1, 2], 6: [1, 2], 3: [1, 2]}
{15: [1], 10: [1], 6: [1], 3: [1], 1: [1]}
预期:
{15: [1, 2, 3, 4, 5]}
{15: [1, 2, 3, 4, 5], 10: [1, 2, 3, 4]}
{15: [1, 2, 3, 4, 5], 10: [1, 2, 3, 4], 6: [1, 2, 3]}
{15: [1, 2, 3, 4, 5], 10: [1, 2, 3, 4], 6: [1, 2, 3], 3: [1, 2]}
{15: [1, 2, 3, 4, 5], 10: [1, 2, 3, 4], 6: [1, 2, 3], 3: [1, 2], 1: [1]}
【问题讨论】:
标签: python list dictionary python-3.7