我正在初始化空列表的字典。有没有比以下更有效的初始化字典的方法?在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