如何从字典中删除所有键为列表元素的项?
进一步的帮助:
如何在Python中获得列表的所有元素?
for循环适用于所有序列,而列表是一个序列。
for key in sequence: print key
如何从字典中删除一个元素?
使用 del(key) 方法。
你应该能够同时完成这两个任务。
for key in list_:
if key in dict_:
del dict_[key]
key in dict_
是检查字典是否存在某个特定键的唯一方法--has_key()
方法已被删除。 - Sven Marnachmap(dictionary.__delitem__, lst)
map(dictionary.__delitem__, filter(dictionary.__contains__, lst))
(虽然事实上,我不太喜欢使用map
或列表推导作为普通for循环的替代品。) - PaulMcGnewdict = dict(
(key, value)
for key, value in olddict.iteritems()
if key not in set(list_of_keys)
)
稍后(比如在2012年末):
keys = set(list_of_keys)
newdict = dict(
(key, value)
for key, value in olddict.iteritems()
if key not in keys
)
或者如果您使用的是2.7+版本的Python字典推导:
keys = set(list_of_keys)
newdict = {
key: value
for key, value in olddict.iteritems()
if key not in keys
}
或者甚至是在键上执行Python 2.7字典推导加上集合交集:
required_keys = set(olddict.keys()) - set(list_of_keys)
return {key: olddict[key] for key in required_keys}
哦,是的,问题很可能是我在计算所需密钥的条件上反了。
set(list_of_keys)
移到循环外面。 - John La Rooyd = {'one':1, 'two':2, 'three':3, 'four':4}
l = ['zero', 'two', 'four', 'five']
for k in frozenset(l) & frozenset(d):
del d[k]
for i in lst:
if i in d.keys():
del(d[i])
d.keys()
的列表或迭代器。你只需要做if i in d:
,这将是更短、更高效的方法,而且已经有了这样的答案。 - Vlad Frolov我对Python一无所知,但我猜你可以遍历列表并通过键从字典中删除条目?