从嵌套字典中删除字典

时间:2017-11-01 22:19:04

标签: python dictionary

我想从嵌套字典中删除字典,我不知道如何。 来自这本词典:

dict = {  
    'user': [
        {
            'firstName': 'john',
            'lastName': 'doe',
            'movieList': []
        },
        {
            'firstName': 'sarah',
            'lastName': 'doe',
            'movieList': []
        },
        {
            'firstName': 'john',
            'lastName': 'smith',
            'movieList': []
        },
        {
            'firstName': 'sarah',
            'lastName': 'smith',
            'movieList': []
        }
    ], 'movie': []
}

我想删除:

{
    'firstName': 'john', 
    'lastName': 'doe', 
    'movieList': []
}

具有索引0 我尝试使用删除但我收到此错误:

dict['user'][userId] TypeError: list indices must be integers or slices, not str

4 个答案:

答案 0 :(得分:1)

首先,我不会将字典命名为“dict”,使用“d”或其他内容。

dict['user'].pop(0)

答案 1 :(得分:0)

我会写评论,但我的声誉太低了。看起来您的变量userId可能是字符串而不是整数。如果是这种情况,请尝试将userId转换为int:

userId = int(userId)

答案 2 :(得分:0)

有关del popremove Difference between del, remove and pop on lists

的更多信息,请参阅此问题

如果您不想使用要删除的词典,我会使用del,如下所示:

d = {'user': [{'firstName': 'john', 'lastName': 'doe', 'movieList': []},
              {'firstName': 'sarah', 'lastName': 'doe', 'movieList': []},
              {'firstName': 'john', 'lastName': 'smith', 'movieList': []},
              {'firstName': 'sarah', 'lastName': 'smith', 'movieList': []}], 'movie': []}

del d['user'][0]

[0]正在删除存储为list密钥值的'user'的第一个索引

如果您反复删除列表的第一个索引并且列表很长,请考虑使用deque(),它从两端快速弹出: https://docs.python.org/3/library/collections.html#collections.deque

另外,不要将变量调用与其类型相同的名称,也就是不要调用字典变量dict

答案 3 :(得分:0)

你可以试试这个:

dict1 = {'user': [{'firstName': 'john', 'lastName': 'doe', 'movieList': []}, {'firstName': 'sarah', 'lastName': 'doe', 'movieList': []}, {'firstName': 'john', 'lastName': 'smith', 'movieList': []}, {'firstName': 'sarah', 'lastName': 'smith', 'movieList': []}], 'movie': []}
new_dict = {a:b[1:] if b else b for a, b in dict1.items()}

输出:

{'movie': [], 'user': [{'lastName': 'doe', 'movieList': [], 'firstName': 'sarah'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'john'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'sarah'}]}