看过好多删除字典键值对的方法(比如:d.pop(‘key’),del d[‘key’]等),都是通过key来进行删除。但是在不知道key的情况下就不好弄了。
本文介绍几种通过value来删除键值对的方法。
1.构造新字典 - - - 最简便
# 删除value='c'的键值对
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>> new = {k:v for k,v in d.items() if v!='c'}
>>> new
{1: 'a', 2: 'b'}
2.使用 copy() 方法 - - - 不容易想到
>>> d = {1: 'a', 2: 'b', 3: 'c'}
>>> for k in d.copy(): # 没加items()只在keys()循环,而不是(k,v)循环
if d[k] == 'c':
d.pop(k) # 或者 del d[k]
>>> d
{1: 'a', 2: 'b'}
3.使用 list 方法强制copy d.keys() - - - 最常见
>>> for k in list(d): # 使用list强制copy d.keys(),避免pop出错
if d[k] == 'c':
d.pop(k) # 或者 del d[k]
>>> d
{1: 'a', 2: 'b'}
小结:
所有方法的本质都是先通过value去确定key,再通过key来删除键值对。