我正在學習 Python,到目前為止,這就是我將如何在陣列中創建索引字典、值對的方法。如果我沒記錯的話,這個操作將是O(n)時間復雜度。
有沒有更pythonic的方法來制作這個字典,其中鍵是陣列中專案的值,值是索引?如果是這樣,那更pythonic的方式會降低時間復雜度嗎?
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}
uj5u.com熱心網友回復:
字典理解是你的 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()))
uj5u.com熱心網友回復:
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 :將組合型別轉換為字典
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446271.html
標籤:Python
上一篇:如何修復“gurobipy.LinExpr”物件不可迭代
下一篇:DynamoDB查詢行號
