从嵌套字典中删除字典 [重复]
Posted
技术标签:
【中文标题】从嵌套字典中删除字典 [重复]【英文标题】:Removing a dictionary from a nested dictionary [duplicate] 【发布时间】:2018-04-14 08:16:16 【问题描述】:我想从嵌套字典中删除字典,但我不知道如何操作。 来自这本词典:
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 我尝试使用 delete 但我收到此错误:
dict['user'][userId] TypeError: list indices must be integers or slices, not str
【问题讨论】:
@FELASNIPER del dict['user'][userId] ,我不知道我还能做什么dict['user']
返回一个 list 而不是 dictionary,这就是错误试图告诉的内容
试试del d['user'][0]
,其中d是你的字典。
userid
的值是什么?
【参考方案1】:
首先,我不会将字典命名为“dict”,而是使用“d”或其他名称。
dict['user'].pop(0)
【讨论】:
感谢您的帮助 什么是“userId”?我复制了您提供的代码,对我来说效果很好。 我没有改变userId的数据类型 现在可以正常使用了【参考方案2】:我会写评论,但我的声誉太低了。看起来您的变量 userId 可能是字符串而不是整数。如果是这种情况,请尝试将 userId 转换为 int:
userId = int(userId)
【讨论】:
【参考方案3】:有关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]
正在删除作为'user'
键值存储的list
的第一个索引
如果您反复删除列表的第一个索引并且列表很长,请考虑使用 deque() 代替,它可以从两端快速弹出: https://docs.python.org/3/library/collections.html#collections.deque
另外,不要将变量命名为与其类型相同的名称,也就是不要将字典变量称为 dict
【讨论】:
【参考方案4】:你可以试试这个:
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']
【讨论】:
以上是关于从嵌套字典中删除字典 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SwiftyJSON 从深度嵌套的 JSON 字典中获取字符串 [重复]