[英]Delete all values in a list in a dictionary
我似乎無法弄清楚如何從字典鍵的列表中刪除所有元素。
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]
以及其他各種無法解決的隨機問題。 我需要它仍然具有所有鍵和'[]'作為值,而內部沒有元素
您可以簡單地將所有值重新分配給一個空列表
pieces = {k : [] for k in pieces}
要么
for k in pieces:
pieces[k].clear()
無需重新list.clear
新詞典,請在值上循環並應用list.clear
它們,因為您知道它們是列表:
for v in pieces.values():
v.clear()
還要避免使用pieces = dict.fromkeys(pieces,[])
的假冒好主意,因為列表是可變的,並且所有鍵的列表最終都相同(經典的敲打頭錯誤)。 不過,這對於不可變的值(例如整數或字符串)有效,但對列表無效。
我想一個好的解決方案可能是:
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': []}
為什么不只是將密鑰放入新列表,刪除舊字典並使用默認值[]創建新字典,如下所示
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 []
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.