【问题标题】:Failing to delete dictionaries that contain a string 'False' as value无法删除包含字符串“False”作为值的字典
【发布时间】:2021-01-30 20:43:43
【问题描述】:

我有一个包含字典的子列表:

[[{'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”是否有问题?有人可以帮忙吗?我真的很感激!

【问题讨论】:

    标签: python-3.x string dictionary


    【解决方案1】:

    我必须创建我的子列表 comb 的副本。显然,我已经删除了仍然需要迭代的元素。所以解决方案是

    for comb in combination:
        for my_dict in comb.copy():
            if 'False' in my_dict.values():
                comb.remove(my_dict)
    

    现在所有 'False' 字符串都被删除了。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2016-11-20
      • 2014-04-16
      • 1970-01-01
      • 2017-09-21
      • 2020-06-18
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多