从基于数组的索引值创建字典的Python方法



我正在学习Python,到目前为止,这就是我在数组中创建索引和值对字典的方法。如果我没有记错的话,这个操作将是O(n)时间复杂度。

有没有一种更像蟒蛇的方法来制作这个字典,其中键是数组中项目的值,值是索引?如果是这样,那么这种更像蟒蛇的方式会降低时间的复杂性吗?

nums = [1, 2, 3, 4, 5]
d = {}
for idx, val in enumerate(nums):
d[val] = idx

期望的结果{1: 0, 2: 1, 3: 2, 4: 3, 5: 4}

字典理解是for循环的一个相当Python的变体:

nums = [1, 2, 3, 4, 5]
d = {k:v for v,k in enumerate(nums)}

输出:{1: 0, 2: 1, 3: 2, 4: 3, 5: 4}

另一种选择是使用itertools.count:

from itertools import count
d = dict(zip(nums,count()))
nums = [1,2,3,4,5,6]
my_dict = dict(zip(nums,list(range(len(nums)))))
print(my_dict)

输出:

{1:0,2:1,3:2,4:3,5:4,6:5}

  • len:获取列表的长度
  • range:从0创建一系列数字至长度,不包括长度
  • list:将范围键入列表
  • zip:将两个列表合并
  • dict:把组合打字成字典

最新更新