我有以下情况:
data = {'key1' : 'value1',
'key2': [
{'subkey1': 'subvalue1',
'subkey2': 'subvalue2'},
{other dictionaries}
...
]
}
我有确切的词典:
{'subkey1': 'subvalue1', 'subkey2': 'subvalue2'}
存储在变量中。我想从数据字典中删除它。我怎么能这样做?
答案 0 :(得分:2)
列表有一个remove
方法,所以如果你知道密钥
data['key2'].remove({'subkey1': 'subvalue1', 'subkey2': 'subvalue2'})
答案 1 :(得分:0)
如果您知道它是列表的第一个元素,您可以使用 del 命令删除该列表的 0 元素。< / p>
如果您不知道列表中的哪个元素,您可以迭代列表以查找要删除的元素,或者您可以使用列表推导来删除元素。
迭代的伪代码类似于:
for each element in the list I want to iterate:
if this element is the one I want to delete:
delete(element)
列表理解可能类似于以下内容:
dict['key2'] = [i for i in dict['key2'] if i != THE_ELEMENT_YOU_WANT_TO_DELETE]
答案 2 :(得分:0)
如果您不知道匹配的密钥(此处为'key2'
),您可以使用:
exact_dict = {'subkey1': 'subvalue1',
'subkey2': 'subvalue2'}
for val in data.itervalues():
try:
if exact_dict in val:
val.remove(exact_dict)
except TypeError:
pass
答案 3 :(得分:0)
假设您的示例中只有两个嵌套级别:
for key in data.keys():
if type(data[key])==type(list()):
if item_to_del in data[key]:
data[key].remove(item_to_del)
对于更深层次的嵌套,请扩展迭代和检查包含然后删除的想法。