python-从列表中删除字典(如果存在)

2024-09-26 04:49:34 发布

您现在位置:Python中文网/ 问答频道 /正文

如果字典已经存在,我正试图将其从列表中删除,但它似乎不起作用。有人知道我做错了什么吗?有人建议我该做什么吗

new_dict = {'value': 'some value', 'key': 'someKey'}
if new_dict in my_list:
    my_list.remove(new_dict)

new_list是一个字典列表,其中肯定有new_dict


Tags: keyin列表newif字典valuemy
3条回答
my_list = [1,{'value':'some value', 'key' :'somekey'}, 2, {'z':'z', 'x': 'x'}]
new_dict = {'value':'some value', 'key' :'somekey'}
#new_dict = {'z':'z', 'x': 'x'}

differ = 0
matched = 0
for element in my_list:
    if type(element) is types.DictType and matched != 0:
        differ = 0
        # check if dictionary keys match
        if element.viewkeys() == new_dict.viewkeys():
            # check if dictionary values match
            for key in element.keys():
                if element[key] != new_dict[key]:
                    differ = 1
        matched = 1

if differ != 1:
    my_list.remove(new_dict)

print my_list

对我来说这两本词典都管用。

如果new_dictmy_list中是“肯定的”,那么my_list.remove(new_dict)应该起作用(也就是说,不需要if new_dict in my_list,这只会减慢速度)。

在大多数情况下,创建一个新列表是明智的:

 new_list = [ dd for dd in my_list if not dd is new_dict ]

这对于函数式编程风格来说是典型的,因为它避免了副作用。想象一下,如果你在函数或方法中使用你的解。在大多数情况下,您只需要为内部目的修改列表,那么修改输入参数是危险的。

相关问题 更多 >