【发布时间】:2015-04-16 08:41:57
【问题描述】:
我需要创建一个字典,其中键是字符串,值是列表。诀窍是我需要循环执行。
目前我的最小化代码如下所示:
for elem in xmlTree.iter():
# skipping root element
if elem.tag == xmlTree.getroot().tag:
continue
# this is supposed to be my temporary list
tmpList = []
for child in elem:
tableWColumns[elem.tag] = tmpList.append(child.tag)
print(tableWColumns)
这仅打印在上次迭代中创建的列表。
问题显然在于,每当我更改列表时,它的所有引用也会更改。我用谷歌搜索了那个。我没有用谷歌搜索的是使用循环时如何处理它。
当我想保留列表时,我应该使用的解决方案是将其复制到其他列表,然后我可以更改原始列表而不会丢失数据。当我基本上需要动态执行此操作时,我不知道该怎么做。
我也仅限于使用标准库。
【问题讨论】:
-
“问题显然在于,每当我更改列表时,它的所有引用也会更改。”不;如果您多次重复使用同一个列表,这可能是一个问题,但这不是您正在做的事情。 (如果它是您的问题,制作列表的新副本而不是重复使用相同的列表的最简单方法是将其切片 - 例如,使用
tmpList[:]而不是tmpList。但是,再说一遍,这不是你的问题。) -
此外,您的代码并没有按照您所说的那样做——您不会只获得在最后一次迭代中创建的列表,您会为每个值获得
None。一个最小的例子很好,但它必须实际证明你正在寻求帮助的问题。有关如何创建好的示例的更多信息,请参阅帮助中的 MCVE。
标签: python list dictionary iteration