gpt4 book ai didi

python - 拼接字典以在 Python 中创建元组列表

转载 作者:太空宇宙 更新时间:2023-11-04 08:01:17 25 4
gpt4 key购买 nike

所以我有这两个字典,其中键是年份(整数),值是 float 。我想将这两者结合起来,并因此创建一个元组列表,其中包含年份、值 1、值 2。所以像这样:

词典 1

 {2011: 1.0,
2012: 2.0,
2013: 3.0}

词典 2

 {2011: 4.0,
2012: 5.0,
2013: 6.0}

首选结果:

 [(2011, 1.0, 4.0),
(2012, 2.0, 5.0),
(2013, 3.0, 6.0)]

有没有简单的方法来做到这一点?感谢您的帮助!

最佳答案

这里有几个可能的解决方案:

import timeit
import random

random.seed(1)


def f1(d1, d2):
return [(k, d1[k], d2[k]) for k in list(set(d1.keys() + d1.keys()))]


def f2(d1, d2):
return [(k, d1[k], d2[k]) for k in d1.viewkeys() & d2]


def f3(d1, d2):
return [(k, d1[k], d2[k]) for k in set().union(d1, d2)]

if __name__ == "__main__":
d1_small = {2011: 1.0,
2012: 2.0,
2013: 3.0}

d2_small = {2011: 4.0,
2012: 5.0,
2013: 6.0}

K, I, N = 1000, 100000, 100
d1_large = {i: random.randint(0, K) for i in range(I)}
d2_large = {i: random.randint(0, K) for i in range(I)}

# Small dataset
print timeit.timeit('f1(d1_small,d2_small)', setup='from __main__ import f1, d1_small,d2_small', number=N)
print timeit.timeit('f2(d1_small,d2_small)', setup='from __main__ import f2, d1_small,d2_small', number=N)
print timeit.timeit('f3(d1_small,d2_small)', setup='from __main__ import f3, d1_small,d2_small', number=N)

# Big dataset
print timeit.timeit('f1(d1_large,d2_large)', setup='from __main__ import f1, d1_large,d2_large', number=N)
print timeit.timeit('f2(d1_large,d2_large)', setup='from __main__ import f2, d1_large,d2_large', number=N)
print timeit.timeit('f3(d1_large,d2_large)', setup='from __main__ import f3, d1_large,d2_large', number=N)

结果是:

0.000144082492556
0.000120792445814
9.31601869678e-05
2.70233741278
2.74489385463
2.5809042933

结论:

f3 在性能方面是赢家,而 f2 在冗长方面是赢家

关于python - 拼接字典以在 Python 中创建元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39658463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com