[英]How to convert a list to a dictionary with list of indexes as values?
这个问题只对每个元素使用一个索引。 我正在尝试做同样的事情,但列表中有重复,所以 dict 中的值将是索引列表。
我有以下代码将列表简化为字典:
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/更有效的方法来做到这一点?
鉴于arr[i]
代表节点i
的父节点,您似乎正在尝试将 Tree 构造为邻接列表。 如果给你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
您可以只使用 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]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.