我似乎无法弄清楚如何从字典键的列表中删除所有元素。
self.pieces = {
'P1': [1, 0],
'P2': [[1, 0], [0, 1]],
'P3': [1, 0],
'P4': [1, 0],
'P5': [1, 0],
'P6': [[1, 0], [1, 0], [1, 0]],
'P7': [1, 0],
'P8': [1, 0],
'R1': [1, 0],
'N1': [1, 0],
'B1': [[1, 0], [1, 0]],
'Q': [1, 0],
'K': [1, 0],
'B2': [1, 0],
'N2': [1, 0],
'R2': [1, 0],
}
我尝试过:
for i in self.pieces:
filter(lambda a: a == '[]', self.pieces[i])
还:
for i in self.pieces:
for j in i:
del self.pieces[i][0]
和其他各种无法解决的随机问题。我需要它仍然具有所有键和'[]'作为值,而里面没有元素
答案 0 :(得分:3)
您只需将所有值重新分配到一个空列表中
pieces = {k : [] for k in pieces}
或
for k in pieces:
pieces[k].clear()
答案 1 :(得分:3)
无需重建新字典,就可以遍历值并在其上应用list.clear
,因为您知道它们是列表:
for v in pieces.values():
v.clear()
也避免使用pieces = dict.fromkeys(pieces,[])
的假冒好主意,因为列表是可变的,并且所有键的列表最终都相同(经典的敲打头错误)。不过,这对于整数或字符串之类的不可变值很有用,但对于列表却无效。
答案 2 :(得分:-1)
我想一个好的解决方案可能是:
pieces = {
'P1': [1, 0],
'P2': [[1, 0], [0, 1]],
'P3': [1, 0],
'P4': [1, 0],
'P5': [1, 0],
'P6': [[1, 0], [1, 0], [1, 0]],
'P7': [1, 0],
'P8': [1, 0],
'R1': [1, 0],
'N1': [1, 0],
'B1': [[1, 0], [1, 0]],
'Q': [1, 0],
'K': [1, 0],
'B2': [1, 0],
'N2': [1, 0],
'R2': [1, 0],
}
for p in pieces:
pieces[p] = []
print(pieces)
输出为
{'P1': [], 'P2': [], 'P3': [], 'P4': [], 'P5': [], 'P6': [], 'P7': [], 'P8': [], 'R1': [], 'N1': [], 'B1': [], 'Q': [], 'K': [], 'B2': [], 'N2': [], 'R2': []}
答案 3 :(得分:-2)
为什么不只是将键放入新列表,而是删除旧字典并使用默认值 [] 创建新字典,如下所示:
key_list = [ i for i in pieces.keys() ] # Get the keys into a new list
del pieces # Delete the dictionary
pieces=dict.fromkeys(key_list, []) # Create a new dict from key_list and default value []