Py学习  »  Python

在嵌套字典上循环并在不满足条件时删除(python)

rororo • 5 年前 • 1279 次点击  

我有一个嵌套字典列表:

[{'a': 1,
  'b': 'string',
  'c': [{'key1': 80,
         'key2': 'string',
         'key3': 4033},
        {'key1': 324,
         'key2': 'string',
         'key3': 4034,
         'key4': 1}]},
 {'a': 1,
  'b': 'string',
  'c': [{'key1': 80,
         'key2': 'string',
         'key3': 4033},
        {'key1': 324,
         'key2': 'string',
         'key3': 4034,
         'key4': 1,
         'key5': 2}]}]

请不要把键的值 c 又是一个字典列表。 现在我想从这个列表中筛选出所有带键的词典 C ,不包含 key1 , key2 , key3 和; key4 .

我想先循环,再循环,等等 dict 在列表中,然后在嵌套的 双关语 那有 C 作为一把钥匙。然后,如果 双关语 里面 C 不符合我的要求,我删除它。

因此,我的代码是:

for j in range(len(mydict)):
    for i in range(len(mydict[j]["c"])):
        if not all (k in mydict[j]["c"][i] for k in ("key1", "key2", "key3", "key4")):
            del(mydict[j]["c"][i])

但是我得到了 IndexError: list index out of range 错误。我的错误在哪里?

我想要的结果是:

[{'a': 1,
  'b': 'string',
  'c': [{'key1': 324,
         'key2': 'string',
         'key3': 4034,
         'key4': 1}]},
 {'a': 1,
  'b': 'string',
  'c': [{'key1': 324,
         'key2': 'string',
         'key3': 4034,
         'key4': 1,
         'key5': 2}]}]
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40829
 
1279 次点击  
文章 [ 3 ]  |  最新文章 5 年前