当我这样做时:
$substr: ['$iso_date', 0, 7]
该列表未更新(对于了解Python的人来说是微不足道的观察结果。)
但是当我这样做时:
i = [5, 6, 7, 5]
for el in i:
el = 2
print(i)
# [5, 6, 7, 5]
然后更新列表。
为什么会这样呢?
即使以这种方式更新了词典列表,这样做是否也被认为是一种坏方法?
答案 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
您实际上是通过键访问列表中每个字典中的值,并在循环中更改每个值。
我认为这在逻辑上是正确的,所以这根本不是一个坏习惯。
如果我的评论有误,请纠正我-我不是编码员。