[英]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.