我有一个列表,其中包含字典的子列表:
[[{'a': 'False'}, {'a': 'True'}],
[{'b': 'False'}, {'b': 'True'}],
[{'a': 'False', 'b': 'False'}, {'a': 'False', 'b': 'True'},
{'a': 'True', 'b': 'False'}, {'a': 'True', 'b': 'True'}]]
我的目标是删除所有包含字符串'True‘的字典。我是这样尝试的:
for comb in combination:
for my_dict in comb:
if 'False' in my_dict.values():
comb.remove(my_dict)
但是,我得到的输出是这样的
[[{'a': 'True'}], [{'b': 'True'}], [{'a': 'False', 'b': 'True'}, {'a': 'True', 'b': 'True'}]]
有人能告诉我为什么这个不能正常工作吗?一开始,我想可能是python只查看第一个值(我知道这是没有意义的),并决定该值不是“False”,但情况似乎并非如此。我的for循环也无法识别第一个值为'False‘的字典。我想知道字符串'True‘和'False’会不会有问题?有人能帮上忙吗?我真的很感激!
发布于 2021-01-31 14:39:18
我必须创建我的子列表comb
的副本。显然,我已经删除了仍然需要迭代的元素。因此,这个问题的解决方案是
for comb in combination:
for my_dict in comb.copy():
if 'False' in my_dict.values():
comb.remove(my_dict)
现在,所有'False‘字符串都被删除了。
https://stackoverflow.com/questions/65972954
复制