我有一个字典,其中包含每个键的列表,但是当我尝试将新值附加到键中的列表时,它会覆盖该列表中的所有值(显然是引用问题)困扰我的是我尝试过的我可以在下面的StackOverflow上找到所有不同的建议:
但我的结果仍然是一样的,下面是受影响的代码,如果有人可以阐明我的情况,我会非常感激!
temp = defaultdict(list)
for vert in row:
if vert > 0:
temp[vert].append(row.index(vert))
Run Code Online (Sandbox Code Playgroud)
这是"vanilla"代码,我没有使用任何方法来复制列表
什么都没有被覆盖.您只是一次又一次地重新添加相同的索引,即具有该值的第一个索引vert:
>>> row = [5, 5, 5]
>>> for vert in row:
... print(row.index(vert))
...
0
0
0
Run Code Online (Sandbox Code Playgroud)
该值首先5在索引处找到0,因此row.index(5)始终返回0,而不是1或2稍后的迭代.
如果要添加所有索引,请使用以下enumerate()函数:
for idx, vert in enumerate(row):
if vert > 0:
temp[vert].append(idx)
Run Code Online (Sandbox Code Playgroud)
它允许您跟踪循环中的迭代.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |