是否可以清除字典中的所有条目但保留所有密钥?
例如,如果我有:
1 kw4 10 en
2 kw2 20 en
10 kw3 50 en
我把一些东西放在其中:
my_dic={
"colour":[],
"number":[]
}
我可以通过以下方式清除这些:
my_dic["colour"]='Red'
my_dic["number"]='2'
但是,如果我想快速清除一本大字典,那么这是一个长篇大论,是否有更快的方法可能用于?我想保留密钥my_dic["colour"] = []
my_dic["number"] = []
,而不必重新创建密钥,只需清除其中的所有条目。
答案 0 :(得分:8)
您可以简单地清除循环中的所有列表:
for value in my_dic.values():
del value[:]
注意value[:]
切片删除;我们正在删除列表中的所有索引,而不是value
引用本身。
请注意,如果您使用的是Python 2,则可能需要使用my_dic.itervalues()
而不是my_dic.values()
来避免为循环创建新的列表对象。
演示:
>>> my_dic = {'colour': ['foo', 'bar'], 'number': [42, 81]}
>>> for value in my_dic.values():
... del value[:]
...
>>> my_dic
{'colour': [], 'number': []}
您还可以使用新的空列表替换所有值:
my_dic.update((key, []) for key in my_dic)
或完全替换整个词典:
my_dic = {key: [] for key in my_dic}
考虑到这两种方法不会更新对列表(第一种方法)或整个字典(第二种方法)的其他引用。
答案 1 :(得分:3)
您无需从字典中删除密钥:
for key in my_dict:
my_dict[key] = []
答案 2 :(得分:0)
一个班轮:
my_dict = dict.fromkeys(my_dict, '')
请注意,这不适用于列表,因为每个条目都有相同的列表。