Python 创建空词典的列表
我想创建一个包含空目录的可变长度列表Python 创建空词典的列表,python,list,dictionary,Python,List,Dictionary,我想创建一个包含空目录的可变长度列表 n = 10 # size of list foo = [] for _ in range(n) foo.append({}) 你会用同样的方法吗,还是有类似的方法 a = [{}*n] 列出解救的方法 foo = [{} for _ in range(n)] 恐怕没有更短的符号了。在Python2中,您使用xrange(n)而不是range(n)来避免将无用的列表具体化 另一种方法是,[{}]*n创建一个长度为n的列表,只使用一个字典,引用n
n = 10 # size of list
foo = []
for _ in range(n)
foo.append({})
你会用同样的方法吗,还是有类似的方法
a = [{}*n]
列出解救的方法
foo = [{} for _ in range(n)]
恐怕没有更短的符号了。在Python2中,您使用xrange(n)
而不是range(n)
来避免将无用的列表具体化
另一种方法是,
[{}]*n
创建一个长度为n
的列表,只使用一个字典,引用n
次。在向字典添加键时,这会导致令人不快的惊喜。前面给出的答案对我来说很好,因为我不关心引用,因为我在下一步将整个列表转换为JSON。但是我会接受你的答案,因为它更通用。@MartinFlucka:使用[{}]*3
不是一个好的做法,即使这只是为了JSON;你会发现自己忘记了那个小细节,当你以后添加键和值时,无论如何你会遇到一个可怕的惊喜。@MartijnPieters你是完全正确的,安全总比遗憾好。@j08lue:这就是我提到它的原因。但是对于Python3,xrange()
被重命名为range()
,并进行了改进,我的初始示例假设Python3。这基本上意味着python中的预分配列表不是“pythonic”的吗?列表在python中通常是一大难题,但我有一种感觉,我只是没有按预期使用它们。。。