如何遍历一个元组 (str),然后 return 一个包含键(来自元组)和键的索引作为值的字典?

How can you iterate through a tuple (str), then return a dictionary containing the keys (from the tuple) and the index of the keys as the values?

如何遍历元组 (str),然后 return 包含键(来自元组)和键索引作为值的字典?

输入:

tup = ('A', 'A', 'B', 'B', 'A')

Return 字典如下所示:

{'A': [0, 1, 4], 'B': [2, 3]}

使用 defaultdict:

tup = ('A', 'A', 'B', 'B', 'A')

from collections import defaultdict

d = defaultdict(list)
for i,k in enumerate(tup):
    d[k].append(i)
    
dict(d)

或者用古典词典:

d = {}
for i,k in enumerate(tup):
    if k in d:
        d[k].append(i)
    else:
        d[k] = [i]

输出:{'A': [0, 1, 4], 'B': [2, 3]}

您也可以使用 dict.setdefault,但如果您不熟悉 setdefault 方法,我发现它不是很明确:

d = {}
for i,k in enumerate(tup):
    d.setdefault(k, []).append(i)

一种简单的方法是为元组中的每个唯一元素分配一个空列表。然后追加对应列表中每个元素的索引。

这是我的代码:-

我正在创建一个空字典。

tup = ('A', 'A', 'B', 'B', 'A')
d = {}

我将字典中的一个空列表分配给元组中的每个唯一元素。

for i in range(len(tup)):
    d[tup[i]] = []

在字典中的相应列表中附加元组的每个元素的索引

for j in range(len(tup)):
    d[tup[j]].append(j)

完整代码:-

tup = ('A', 'A', 'B', 'B', 'A')
d = {}
for i in range(len(tup)):
    d[tup[i]] = []
for j in range(len(tup)):
    d[tup[j]].append(j)
print(d)