You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在枚举Numpy数组时直接生成键值反转的字典?

问题

我当前的实现代码如下:

import numpy as np
from datetime import date

arr= np.arange(date(2020, 1, 1), date(2021, 1, 1)).astype(str)
dict_required = dict(enumerate(arr))

运行后得到的字典示例:

{0: '2020-01-01',
 1: '2020-01-02',
 2: '2020-01-03',
 3: '2020-01-04',
 ...
}

我需要将字典的键值互换,让日期字符串作为键、数字序号作为值。目前我是通过以下代码反转:

inv_map = {v: k for k, v in dict_required.items()}

但我想知道,能不能在使用enumerate枚举数组的阶段就直接生成这种键值反转的字典?

解答

当然可以,不需要先生成原字典再反转,直接在构建字典时交换enumerate返回的键值对位置即可:

import numpy as np
from datetime import date

arr = np.arange(date(2020, 1, 1), date(2021, 1, 1)).astype(str)
inv_map = {v: k for k, v in enumerate(arr)}

或者用更简洁的生成器表达式直接传给dict():

inv_map = dict((v, k) for k, v in enumerate(arr))

本质就是把enumerate输出的(序号, 日期)元组反转成(日期, 序号)作为字典的键值对,一步就能得到目标字典,省去了先创建原字典再遍历反转的额外步骤。

内容的提问来源于stack exchange,提问作者user13744439

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:46:06