私は次のコードを持っています。削除がディクテーションのリストで機能しないのはなぜですか?
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"])
これを実行するたびに、dictの1つのエントリだけが削除されます。たとえば、この場合は2番目のエントリが削除されており、それはSC5-01OS19_GP221_JC302_LTE_MTN
です。私はこれが浅いコピーに関連するものだと信じています。私は正しいですか?そうでなければ、どのようにしてこの問題を解決できますか?
しかし、もし私が 'a = [1,2,3,4,5,6,7,8]'を実行し、 'for e in a:if e%2 == 0:a.remove (e) '、それはうまく動作します。 –
@MayukhSarkar私は適切な推論で答えを更新しました。見てください。 – AKS
ありがとうございました。私の理解をはっきりさせました。 –