我有两个字典
runde = {
"A": ["1, 2, 3", "4, 5, 6"],
"B": ["1, 2, 3", "4, 5, 6"],
"C": ["1, 2, 3", "4, 5, 6"],
"D": ["1, 2, 3", "4, 5, 6"],
}
bilete = {
"B": ["1, 2, 3", "4, 5, 6"],
"C": ["1, 2, 3", "4, 5, 6"],
}
我想从runde减去bilete,结果
runde = {
"A": ["1, 2, 3", "4, 5, 6"],
"B": [],
"C": [],
"D": ["1, 2, 3", "4, 5, 6"],
}
编码
for key in runde:
if key in bilete:
b = bilete[key]
for a in b:
runde[key].remove(a)
这段代码可以正常工作,但是在我的情况下,首先.remove之后,结果是
{'A': ['4, 5, 6'],'B': ['4, 5, 6'],'C': ['4, 5, 6'],'D': ['4, 5, 6']}
秒后。删除结果是
{'A': [],'B': [],'C': [],'D': []}
然后我得到错误ValueError:list.remove(x):x不在列表中
这是我的情况,任何帮助将不胜感激:
import pickle
# here is my variables saved: import.pkl
# https://drive.google.com/file/d/1SbJm9J5dFQgc1H6m8C6epqDLAs2m15lS/view?usp=sharing
with open('import.pkl', 'rb') as f:
runde, bilete = pickle.load(f)
for key in runde:
if key in bilete:
b = bilete[key]
for a in b:
runde[key].remove(a)
如果我输入以下代码:
runde = {
"A": ["1, 2, 3", "4, 5, 6"],
"B": ["1, 2, 3", "4, 5, 6"],
"C": ["1, 2, 3", "4, 5, 6"],
"D": ["1, 2, 3", "4, 5, 6"],
}
bilete = {
"B": ["1, 2, 3", "4, 5, 6"],
"C": ["1, 2, 3", "4, 5, 6"],
}
for key in runde:
if key in bilete:
b = bilete[key]
for a in b:
runde[key].remove(a)
print(runde)
我得到以下输出:
{'A': ['1, 2, 3', '4, 5, 6'], 'B': [], 'C': [], 'D': ['1, 2, 3', '4, 5, 6']}
我试图确切地猜测您拥有的数据,但是到目前为止,我还无法重现您的确切症状。
但是,如果我输入以下代码:
first = "1, 2, 3"
second = "4, 5, 6"
coll = [first, second]
runde = {
"A": coll,
"B": coll,
"C": coll,
"D": coll,
}
bilete = {
"B": coll,
"C": coll,
}
for key in runde:
if key in bilete:
b = bilete[key]
for a in b:
runde[key].remove(a)
print(runde)
print(runde)
我得到以下输出:
{'A': [], 'B': [], 'C': [], 'D': []}
并没有错误。
另外,如果我在所有循环之前插入此代码:
import copy
for k in runde:
runde[k] = copy.deepcopy(runde[k])
然后输出返回到所需的输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句