這個問題在這里已經有了答案: 如何創建鍵或將元素附加到鍵? (5 個回答) 4 天前關閉。
這個問題只對每個元素使用一個索引。我正在嘗試做同樣的事情,但在串列中重復,所以字典中的值將是索引串列。
我有以下代碼將串列減少為字典:
def list_to_dict(l):
d = {}
for i in range(len(l)):
if l[i] not in d:
d[l[i]] = []
d[l[i]].append(i)
return d
print(list_to_dict([1, 2, 3, 1]))
# Gives: {1: [0, 3], 2: [1], 3: [2]}
我可以知道是否有更pythonic/有效的方法來做到這一點?
uj5u.com熱心網友回復:
看起來您正在嘗試將 Tree 構造為 Adjacency 串列,因為它arr[i]代表 node 的父級i。如果arr給你,你可以用下面的方式來構造鄰接表。
from collections import defaultdict
def reduce_list_to_map(arr):
adj = defaultdict(list)
for i in range(len(arr)):
adj[arr[i]].append(i)
return adj
uj5u.com熱心網友回復:
您可以只使用 dict 方法setdefault而不是檢查密鑰是否存在。此外,不是回圈索引,而是使用更干凈enumerate:
def list_to_dict(l):
d = {}
for i, val in enumerate(l):
d.setdefault(val, []).append(i)
return d
print(list_to_dict([1, 2, 3, 1]))
# Gives: {1: [0, 3], 2: [1], 3: [2]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/373945.html
