如何在枚举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
相关产品推荐
相关产品推荐

