我可以做到
mydict = {}
for a in range(0,6):
mydict[a] = []
print (mydict)
#{0: [], 1: [], 2: [], 3: [], 4: [], 5: []}
问题是我如何通过dict理解来实现这一目标?
编辑:
d = {level: [] for level in range(1, level + 1)}
for each_level in d:
d[each_level] = [ExampleClass(1, 1)
for _ in range(5)]
很抱歉没有从一开始就提出我的建议,我认为这不会有太大帮助。
这就是我所拥有的,它可以实现我想要的功能,但是我想知道是否有一种方法可以将所有这些缩短为一行左右。
最后,我想要这样的东西:
d = {level: [] for level in range(1, level + 1), [ExampleClass(1, 1) for _ in range(5)]
答案 0 :(得分:3)
像这样:
d = {a:[] for a in range(6)}
不要将名称dict
用于自己的变量,而是将阴影化内置名称dict
。
还要注意,如果不为start
提供range
参数,则默认为0
。
您可能还想查看defaultdict
模块中的collections
,而不是自己用空列表初始化dict
。演示:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[0]
[]
>>> d[1]
[]
仅当您首次访问密钥时,实例化列表。
>>> d
defaultdict(<class 'list'>, {0: [], 1: []})
编辑:〜跟进〜
我没有您的示例课程,但是您应该能够从该演示中学到必要的synatx。 slice
将介入您的ExampleClass
。
>>> ExampleClass = slice
>>> d = {a:[ExampleClass(1, 1) for _ in range(5)] for a in range(6)}
>>> d
{0: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 1: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 2: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 3: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 4: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)], 5: [slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None), slice(1, 1, None)]}