Removing a dictionary from a nested dictionary
本问题已经有最佳答案,请猛点这里访问。
我想从嵌套字典中删除一个字典,我不知道怎么做。从本词典:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | dict = { 'user': [ { 'firstName': 'john', 'lastName': 'doe', 'movieList': [] }, { 'firstName': 'sarah', 'lastName': 'doe', 'movieList': [] }, { 'firstName': 'john', 'lastName': 'smith', 'movieList': [] }, { 'firstName': 'sarah', 'lastName': 'smith', 'movieList': [] } ], 'movie': [] } |
我要删除:
1 2 3 4 5 | { 'firstName': 'john', 'lastName': 'doe', 'movieList': [] } |
号
索引为0的我尝试使用"删除",但得到以下错误:
1 | dict['user'][userId] TypeError: list indices must be integers or slices, not str |
首先,我不会把听写命名为"dict",用"d"或其他什么词。
1 | dict['user'].pop(0) |
您可以尝试以下操作:
1 2 | 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()} |
。
输出:
1 | {'movie': [], 'user': [{'lastName': 'doe', 'movieList': [], 'firstName': 'sarah'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'john'}, {'lastName': 'smith', 'movieList': [], 'firstName': 'sarah'}]} |
有关
如果您不想使用要删除的词典,我将使用
1 2 3 4 5 6 | 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] |
此
如果您重复删除列表的第一个索引,并且列表很长,请考虑使用deque(),它的两端都有快速的pop:https://docs.python.org/3/library/collections.html collections.deque
另外,不要将变量称为与它们类型相同的名称,也就是不要将字典变量dict称为
我会写评论,但我的名声太低了。看起来变量userid可能是字符串而不是整数。如果是这种情况,请尝试将userid转换为int:
1 | userId = int(userId) |
号