几种字典合并的方法及相应的时间效率比较
今天因为项目需求,需要进行字典的合并与更新,遂有以下的方法并对其进行时间效率的比较:#!/usr/bin/pythonimport timedef f1(d1, d2):return dict(d1, **d2)def f2(d1, d2):return dict(list(d1.items()) + list(d2.items()))def f3(d1, d...
·
今天因为项目需求,需要进行字典的合并与更新,遂有以下的方法并对其进行时间效率的比较:
#!/usr/bin/python
import time
def f1(d1, d2):
return dict(d1, **d2)
def f2(d1, d2):
return dict(list(d1.items()) + list(d2.items()))
def f3(d1, d2):
d = d1.copy()
d.update(d2)
return d
def f4(d1, d2):
d1.update(d2)
return d1
def f5(d1, d2):
d = dict(d1)
d.update(d2)
return d
def f6(d1, d2):
return (lambda a, b: (lambda a_copy: a_copy.update(b) or a_copy)(a.copy()))(d1, d2)
def f7(d1, d2):
d = {}
d.update(d1)
d.update(d2)
return d
def t(f, n):
st = time.time()
for i in range(1000000):
dic1 = {'a': 'AA', 'b': 'BB', 'c': 'CC'}
dic2 = {'a': 'aa', 'B': 'bb', 'C': 'cc'}
dic3 = f(dic1, dic2)
et = time.time()
print('%s cost:%s' % (n, et - st))
return dic3
dic1 = t(f1, 'f1')
print(dic1)
dic2 = t(f2, 'f2')
print(dic2)
dic3 = t(f3, 'f3')
print(dic3)
dic4 = t(f4, 'f4')
print(dic4)
dic5 = t(f5, 'f5')
print(dic5)
dic6 = t(f6, 'f6')
print(dic6)
dic7 = t(f7, 'f7')
print(dic7)
结果:
f1 cost:1.7775485515594482
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f2 cost:5.397264719009399
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f3 cost:1.5443964004516602
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f4 cost:1.4223535060882568
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f5 cost:1.9414927959442139
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f6 cost:2.7576961517333984
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
f7 cost:1.7975499629974365
{'a': 'aa', 'b': 'BB', 'c': 'CC', 'B': 'bb', 'C': 'cc'}
可以发现,第四种f4的时间效率比较高。
更多推荐
所有评论(0)