我有以下代码。为什么删除不能在列表中使用?
import os
products = [
{"Product": "S65-85OS04_M2M_GP211_JC222_R6",
"PlatformName": "winPc",
"PlatformVariant": "eeprom",
"DocGeneration": False,
"BuildStatus": "Pass",
},
{"Product": "SC5-01OS19_GP221_JC302_LTE_MTN",
"PlatformName": "winPc",
"PlatformVariant": "flash",
"DocGeneration": False,
"BuildStatus": "Fail",
},
{"Product": "SC5-01OS01_GP211_JC302_LTE_TMO",
"PlatformName": "winPc",
"PlatformVariant": "flash",
"DocGeneration": False,
"BuildStatus": "Pass",
}
]
class UTE(object):
def __init__(self, workspace, products, blackList=None):
for each in products:
# print each
if each['Product'] in blackList:
products.remove(each)
for each in products:
print each["Product"]
if __name__ == '__main__':
ins = UTE('ws', products, ["SC5-01OS01_GP211_JC302_LTE_TMO", "SC5-01OS19_GP221_JC302_LTE_MTN"])
现在,每当我运行这个,它只会删除字典中的一个条目。例如,在这种情况下,它将删除第二个条目,即SC5-01OS19_GP221_JC302_LTE_MTN
。我相信这是有关浅拷贝.. 我对吗?如果不是那么如何解决这个问题?
但是,如果我做'a = [1,2,3,4,5,6,7,8]'并且在e:if e%2 == 0中做:a.remove (e)',那么它工作正常..为什么? –
@MayukhSarkar我用适当的推理更新了我的答案。请看一看。 – AKS
非常感谢..让我的理解更加清晰.. –