社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Trenton • 3 年前 • 1524 次点击  

我正在学习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
 
1524 次点击  
文章 [ 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()))