我正在学习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:把组合打字成字典