繁体   English   中英

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

[英]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),然后返回包含键(来自元组)和键索引作为值的字典?

输入:

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

返回一个看起来像这样的字典:

{'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]

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

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

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

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

这是我的代码:-

我正在创建一个空字典。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM