首页 > 编程知识 正文

python字典删除指定元素,Python删除列表中的字典元素

时间:2023-05-05 10:41:24 阅读:274727 作者:4196

初始代码(此代码执行错误):

#coding=utf-8D={'Google':'www.google.com','Bairu':'www.baidu.com','Taobao':'www.taobao.com'}for key,value in D.items(): if value=='www.google.com': D.pop('Google') else: continueprint(D)

错误指示如下:

RuntimeError: dictionary changed size during iteration

分析原因:

遍历时不能修改字典元素,即不能在迭代的时候添加或删除属性, 只能更改属性值. 

解决方案:

因为在python3中dict.keys()是一个迭代器。迭代器在操作过程中,是不允许被修改的。所以我们要把迭代器(data.keys()),改为一个list(非迭代器),这样我们就可以对字典操作了。 其实这里我们通过list()已经把for循环迭代的对象,由原来的data.keys()变为了一个由data.keys()组成的一个list()数据了。

代码修改如下

#coding=utf-8D={'Google':'www.google.com','Bairu':'www.baidu.com','Taobao':'www.taobao.com'}for key in list(D.keys()): if D[key]=='www.google.com': del D[key] continueprint(D)#输出:{'Bairu': 'www.baidu.com', 'Taobao': 'www.taobao.com'}

细心的朋友会发现,这里我们对data.keys()做了一个list()操作,请大家想想为什么要做这样的一个操作呢?

因为在python3中dict.keys()是一个迭代器。迭代器在操作过程中,是不允许被修改的。所以我们要把迭代器(data.keys()),改为一个list(非迭代器),这样我们就可以对字典操作了。 其实这里我们通过list()已经把for循环迭代的对象,由原来的data.keys()变为了一个由data.keys()组成的一个list()数据了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。