你如何遍歷一個元組(str),然后回傳一個包含鍵(來自元組)和鍵的索引作為值的字典?
輸入:
tup = ('A', 'A', 'B', 'B', 'A')
回傳一個如下所示的字典:
{'A': [0, 1, 4], 'B': [2, 3]}
uj5u.com熱心網友回復:
使用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)
uj5u.com熱心網友回復:
一種簡單的方法是為元組中的每個唯一元素分配一個空串列。然后追加對應串列中每個元素的索引。
這是我的代碼:-
創建一個空字典。
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/456020.html
上一篇:將文本檔案轉換為具有多個鍵的字典
下一篇:如果鍵與輸入匹配,則列印鍵和值?
