2024-09-26 04:49:34 发布
网友
如果字典已经存在,我正试图将其从列表中删除,但它似乎不起作用。有人知道我做错了什么吗?有人建议我该做什么吗
new_dict = {'value': 'some value', 'key': 'someKey'} if new_dict in my_list: my_list.remove(new_dict)
new_list是一个字典列表,其中肯定有new_dict
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_dict在my_list中是“肯定的”,那么my_list.remove(new_dict)应该起作用(也就是说,不需要if new_dict in my_list,这只会减慢速度)。
new_dict
my_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 ]
这对于函数式编程风格来说是典型的,因为它避免了副作用。想象一下,如果你在函数或方法中使用你的解。在大多数情况下,您只需要为内部目的修改列表,那么修改输入参数是危险的。
对我来说这两本词典都管用。
如果
new_dict
在my_list
中是“肯定的”,那么my_list.remove(new_dict)
应该起作用(也就是说,不需要if new_dict in my_list
,这只会减慢速度)。在大多数情况下,创建一个新列表是明智的:
这对于函数式编程风格来说是典型的,因为它避免了副作用。想象一下,如果你在函数或方法中使用你的解。在大多数情况下,您只需要为内部目的修改列表,那么修改输入参数是危险的。
相关问题 更多 >
编程相关推荐