【问题标题】:How to clean a dictionary where the values are equal to a variable [duplicate]如何清理值等于变量的字典[重复]
【发布时间】:2019-11-03 11:35:09
【问题描述】:

我有一个由多个键组成的字典。 Is 是由循环创建的,因此在开始时生成的键没有值,但是我稍后会填充它们。 有时,一个键没有填满,所以我想从字典中删除它

字典看起来像:

{'a' : [1,2,3,4] , 'b' : [5,6,7,8] ,'c': [] ,'d': [9,10,11]}

我可能有多个看起来像“c”的值 我已经尝试过 try/except 但仍然得到“迭代期间字典更改大小”

d= {'a' : [1,2,3,4] , 'b' : [5,6,7,8] ,'c': [] ,'d': [9,10,11]}
dic_key = d.keys()
for key in dic_key:
         try:
             if len(d[key]) == 0:
                    del d[key]
         except:
             pass

"字典在迭代过程中改变了大小"

【问题讨论】:

  • 是的@Sayse,绝对至少是第二个的副本
  • 你不应该修改你正在循环的迭代。要么创建第二个字典,这样您就可以让一个字典迭代并修改另一个字典,或者使用推导式。

标签: python loops dictionary


【解决方案1】:

使用dict comprehension:

试试这个:

d = {k:v for k,v in d.items() if len(v)}

【讨论】:

  • if v 应该足够了。无需查看len
  • 你是对的,就像bool([]) is False
猜你喜欢
  • 2013-04-28
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多