我正在初始化空列表的字典。有没有比以下更有效的初始化字典的方法?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
有没有办法我每次都不必写dictLists,或者这是不可避免的?
答案 0 :(得分:8)
您可以使用collections.defaultdict它允许您设置一个工厂方法,该方法返回缺失键上的特定值。
a = collections.defaultdict(list)
编辑:
这是我的钥匙
b = ['a', 'b','c','d','e']
现在我在这里使用“预定义键”
for key in b:
a[key].append(33)
答案 1 :(得分:6)
如果事先知道密钥,则可以
dictLists = dict((key, []) for key in ["xcg", "bsd", ...])
或者,在Python> = 2.7:
中dictLists = {key: [] for key in ["xcg", "bsd", ...]}
答案 2 :(得分:3)
如果添加静态键,为什么不直接将它们放在dict构造函数中?
dictLists = dict(xcg=[], bsd=[], ghf=[])
或者,如果你的密钥并不总是有效的python标识符:
dictLists = {'xcg': [], 'bsd': [], 'ghf': []}
另一方面,如果您的按键不是静态的或者很容易按顺序存储,那么如果有很多按键,则循环按键可能会更有效。以下示例仍然输出keys
变量,使其不比上述方法更有效,但如果keys
以某种方式生成,则可能更有效:
keys = ['xcg', 'bsd', 'ghf', …]
dictLists = {key: [] for key in keys}
答案 3 :(得分:2)
您还可以使用for循环来添加键:
for i in ("xcg", "bsd", "ghf", "cda"):
dictList[i] = []
答案 4 :(得分:1)
在支持字典理解的Python版本中(Python 2.7 +):
dictLists = {listKey: list() for listKey in listKeys}