Py学习  »  Python

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

Trenton • 3 年前 • 1445 次点击  

我正在学习Python,从现在开始,我将创建一个数组中索引、值对的字典。如果我没弄错的话,这次行动会 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}

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129599
 
1445 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Dhananjay Yadav
Reply   •   1 楼
Dhananjay Yadav    3 年前
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}

  • 莱恩:知道名单的长度
  • 范围:从0创建一系列数字 到长度,长度不包括在内
  • 列表:在列表中键入范围
  • zip:将这两个列表结合起来
  • 把这个组合打进去 词典
mozway
Reply   •   2 楼
mozway    3 年前

字典理解是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()))