【问题标题】:create dictionary using nested for loops使用嵌套的 for 循环创建字典
【发布时间】:2019-09-30 16:33:20
【问题描述】:

我希望从嵌套循环中创建一个字典,以遍历日期和变量。鉴于我的日期长度约为 400 且 myvars 约为 50,000,我想尽可能高效地创建它。非常感谢。

fmap = dict.fromkeys(range(len(dates)*len(myvars)))
count = 0
for j in dates:
    for i in myvars:
        fmap[count] = partial(dosomething, i, j)
        count = count+1

【问题讨论】:

  • 打电话给dict.fromkeys()有什么意义?无论如何,嵌套循环都会重新分配所有键。
  • 我建议使用与嵌套循环等效的字典理解。更好的是,如果您参数化您的 partial 函数以在一次调用中构建整个字典,您可以节省时间。
  • 假设您确实需要调用partial() 两百万次并将每个结果存储到字典中的一个键中,我看不出有任何方法可以使这段代码更高效。我怀疑唯一真正的效率提升将是想出一种方法来避免向 partial() 拨打 200 万次电话,但你没有给我们足够的细节来推测如何做到这一点。
  • 你能举一个数据的例子以及最终的字典应该是什么样子吗?

标签: python loops dictionary nested


【解决方案1】:

你可以这样做,应该很高效:

count = len(dates) * len(myvars)
fmap = dict(zip(range(count), [partial(dosomething, i, j) for j in dates for i in myvars]))

【讨论】:

  • 如何更高效?这是更少的代码,但我不确定提问者的意思。
  • 使用列表理解肯定通常比 for 循环更有效。
  • 我相信你的话。
  • 而且还在做无用的计算,比如在每个循环中增加count。我的代码肯定更有效率,但我不知道它是否是最好的解决方案。
猜你喜欢
  • 2021-07-25
  • 2019-03-29
  • 2022-01-03
  • 2021-12-03
  • 1970-01-01
  • 2020-11-02
  • 2016-06-08
  • 2020-09-13
  • 2017-01-03
相关资源
最近更新 更多