我想从嵌套字典中删除字典,我不知道如何。 来自这本词典:
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
答案 0 :(得分:1)
首先,我不会将字典命名为“dict”,使用“d”或其他内容。
dict['user'].pop(0)
答案 1 :(得分:0)
我会写评论,但我的声誉太低了。看起来您的变量userId可能是字符串而不是整数。如果是这种情况,请尝试将userId转换为int:
userId = int(userId)
答案 2 :(得分:0)
有关del
pop
和remove
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'}]}