将dict附加到列表的方法更有效

时间:2011-10-14 17:59:05

标签: python

# Method one
array_a = []
a = {}
for i in range(5):
    a = {}
    a[str(i)] = i
    array_a.append(a)
print(array_a)
# [{'0': 0}, {'1': 1}, {'2': 2}, {'3': 3}, {'4': 4}]

# Method two    
from copy import deepcopy
array_b = []
b = {}
for i in range(5):
    b.clear()
    b[str(i)] = i
    array_b.append(deepcopy(b))
print(array_b)
# [{'0': 0}, {'1': 1}, {'2': 2}, {'3': 3}, {'4': 4}]

我想知道上面哪一个更有效率。 而且,如果你有一个更好的,请告诉我。

2 个答案:

答案 0 :(得分:7)

差异无关紧要。两者都需要每次都创建一个新的dict。由于第一种方法更清晰,因此优于第二种方法。

我的建议是列表理解:

array_c = [{str(i): i} for i in range(5)]

答案 1 :(得分:1)

这是一个单线程,也应该更有效:

array_a.extend([{str(i): i} for i in xrange(5)])

或通过map():

array_a.extend(map(lambda i: {str(i): i}, xrange(5)))