我正在学习Python,从现在开始,我将创建一个数组中索引、值对的字典。如果我没弄错的话,这次行动会 O(n) 时间复杂性。
O(n)
有没有一种更像python的方法来制作这个字典,其中键是数组中项目的值,值是索引?如果是这样的话,这种更具Python风格的方式会降低时间复杂度吗?
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}
{1: 0, 2: 1, 3: 2, 4: 3, 5: 4}
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}
字典理解是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 :
itertools.count
from itertools import count d = dict(zip(nums,count()))