我正在初始化一个空列表字典。有没有比以下方法更有效的初始化字典的方法?
dictLists = {}
dictLists['xcg'] = []
dictLists['bsd'] = []
dictLists['ghf'] = []
dictLists['cda'] = []
...
有没有一种方法我不必每次都写 dictLists,或者这是不可避免的?
我正在初始化一个空列表字典。有没有比以下方法更有效的初始化字典的方法?
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((key, []) for key in ["xcg", "bsd", ...])
或者,在 Python >=2.7 中:
dictLists = {key: [] for key in ["xcg", "bsd", ...]}
如果添加静态键,为什么不直接将它们放在 dict 构造函数中?
dictLists = dict(xcg=[], bsd=[], ghf=[])
或者,如果您的密钥并不总是有效的 python 标识符:
dictLists = {'xcg': [], 'bsd': [], 'ghf': []}
另一方面,如果您的密钥不是静态的或易于存储在序列中,那么如果有很多密钥,则循环遍历这些密钥可能会更有效。下面的示例仍然键入keys
变量,使其不比上述方法更有效,但如果keys
以某种方式生成,这可能更有效:
keys = ['xcg', 'bsd', 'ghf', …]
dictLists = {key: [] for key in keys}
您还可以使用 for 循环来添加键:
for i in ("xcg", "bsd", "ghf", "cda"):
dictList[i] = []
在支持字典理解的 Python 版本(Python 2.7+)中:
dictLists = {listKey: list() for listKey in listKeys}