我正在初始化空列表的字典。有沒有比以下更有效的初始化字典的方法?在Python中創建空列表字典的最有效方法?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
有沒有一種方法,我不必每次都寫dictLists,或者這是不可避免的?
我正在初始化空列表的字典。有沒有比以下更有效的初始化字典的方法?在Python中創建空列表字典的最有效方法?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
有沒有一種方法,我不必每次都寫dictLists,或者這是不可避免的?
您可以使用collections.defaultdict它允許您設置一個工廠方法返回丟失鍵上的特定值。
a = collections.defaultdict(list)
編輯:
這裏是我的鑰匙
b = ['a', 'b','c','d','e']
現在,這裏使用 「預定義項」
for key in b:
a[key].append(33)
如果你添加靜態鍵,爲什麼不直接把它們放在字典構造函數?
dictLists = dict(xcg=[], bsd=[], ghf=[])
,或者,如果您的鍵不也總是有效的Python標識符:
dictLists = {'xcg': [], 'bsd': [], 'ghf': []}
如果,另一方面,你的鑰匙不是靜態的或容易儲存在一個序列,循環的鑰匙如果它們中有很多,效率會更高。以某種方式產生下面的例子仍然類型從keys
變量使這個並不比上述方法更有效,但如果keys
這可能是更有效的:
keys = ['xcg', 'bsd', 'ghf', …]
dictLists = {key: [] for key in keys}
這是絕對最有效的,就像海報問到的那樣。 – georg
我你也可以使用一個for循環的要添加的鍵:
for i in ("xcg", "bsd", "ghf", "cda"):
dictList[i] = []
如果密鑰是事先知道,你可以做
dictLists = dict((key, []) for key in ["xcg", "bsd", ...])
或者,在Python> = 2.7:
在支持字典推導了Python的版本(Python的2.7+) :
dictLists = {listKey: list() for listKey in listKeys}
@MartijnPieters謝謝,現在我簡單地回答了我的確認。 '[]'也可以代替'list()',就像在其他人的回答中一樣。 – JAB
字典鍵是你真正想要的嗎?如果它們是隨機的或算術級數,它們是否重要? – Ben
負載猜測您的密鑰的答案存儲在一個變量或類似的,你正在循環。你的鑰匙是靜態的嗎?或者它們是否生成? –
鍵是靜態的。 – idealistikz