字典列表已更新-数字列表未更新

时间:2019-11-28 12:22:00

标签: python list dictionary for-loop

当我这样做时:

$substr: ['$iso_date', 0, 7]

该列表未更新(对于了解Python的人来说是微不足道的观察结果。)

但是当我这样做时:

i = [5, 6, 7, 5]

for el in i:

    el = 2

print(i)
# [5, 6, 7, 5]

然后更新列表。

为什么会这样呢?

即使以这种方式更新了词典列表,这样做是否也被认为是一种坏方法?

2 个答案:

答案 0 :(得分:1)

这是因为python dict是可变的而不是整数。这就是列表更改的原因。 (https://www.geeksforgeeks.org/mutable-vs-immutable-objects-in-python/

如果要更改列表,则必须按其索引访问元素,即l[i] = 2

最诚挚的问候

答案 1 :(得分:0)

运行此代码时:

i = [5, 6, 7, 5]

for el in i:

    el = 2

您只是在循环内部重新分配了一个变量,而没有在原始列表中进行任何更改。 要更改列表,您需要在循环内提​​供i [el] = 2。

但是在运行时:

i = [{'id': 5}, {'id': 6}, {'id': 7}, {'id': 5}]

for el in i:

    el['id'] = 2

您实际上是通过键访问列表中每个字典中的值,并在循环中更改每个值。

我认为这在逻辑上是正确的,所以这根本不是一个坏习惯。

如果我的评论有误,请纠正我-我不是编码员。