我目前正在做一個小專案(我對 python 比較陌生),其中我有一個專案字典(例如):
dic = {
'ab': 'a',
'ac': 'a',
'bc': 'b',
'bd': 'b',
'cd': 'c',
'ce': 'c'
}
并希望將其轉換為串列,其中每個初始索引都與其中一個值相關
sorted_lst[0][0] = ab
sorted_lst[2][1] = ce
等等。我該怎么做呢?從排序串列而不是字典開始會更容易嗎?
這樣做的原因是我想列印出猜測的列串列,其中它們的分配來自猜測的首字母。IE。就像是:
ab bc cd
ac bd ce
這樣用戶就可以以更吸引人的方式看到他們的猜測,而不僅僅是按字母順序排列的串列。
uj5u.com熱心網友回復:
看起來您可以使用 adefaultdict將資料轉換為 2D:
from collections import defaultdict
d = defaultdict(list)
for k,v in dic.items():
d[v].append(k)
sorted_lst = list(d.values())
# or to ensure sorting of the first level:
# sorted_lst = [d[k] for k in sorted(d)]
sorted_lst[0][1]
# ac
sorted_lst[2][1]
# ce
輸出:[['ab', 'ac'], ['bc', 'bd'], ['cd', 'ce']]
uj5u.com熱心網友回復:
這是一種方法:
- 我們對唯一值進行排序,然后遍歷每個值并將鍵分組到一個串列中。
data = {
'ab': 'a',
'ac': 'a',
'bc': 'b',
'bd': 'b',
'cd': 'c',
'ce': 'c'
}
sorted_data = []
for item in sorted(set(data.values())):
sorted_data.append([key for key in data.keys() if data[key] == item])
# sorted_data = [['ab', 'ac'], ['bc', 'bd'], ['cd', 'ce']]
您還可以使用setdefault():
sorted_data = {}
for key, item in data.items():
sorted_data.setdefault(item, []).append(key)
sorted_data = list(sorted_data.values())
要列印值,您可以遍歷每個專案:
for i in range(len(sorted_data[0])):
for j in range(len(sorted_data)):
print(sorted_data[j][i], end=" ")
print("")
輸出:
ab bc cd
ac bd ce
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/452129.html
下一篇:如何列印所有連續負值的總和
