我有一本這樣的字典:
{ 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
有沒有辦法將字典的每個值的長度設定為其鍵?
我的意思是,我想要這本字典:
{ 5:['A', 'B', 'C', 'D', 'E'] , 4:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 2:['BC','EAD'] , 1:['BCEAD'] }
請幫我解決這個問題。謝謝。
uj5u.com熱心網友回復:
使用非常 Pythonic 的 dict 理解:
dict_ = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
dict2 = {len(v) : v for k, v in dict_.items()}
>>> {5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}
uj5u.com熱心網友回復:
嘗試這個:
dict_old = {1: ['A', 'B', 'C', 'D', 'E'], 2: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 4: ['BC', 'EAD'], 5: ['BCEAD']}
dict_new = {}
for k, v in dict_old.items():
dict_new[len(v)] = v
print(dict_new)
uj5u.com熱心網友回復:
你可以這樣做dict comprehension:
>>> dict_ = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
>>> dict2 = {len(v) : v for _, v in dict_.items()}
{5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}
或者你可以用一個map函式來做到這一點:
>>> dict_ = {
1:['A', 'B', 'C', 'D', 'E'] ,
2:['B', 'C', 'E', 'AD'] ,
3:['E', 'AD', 'BC'] ,
4:['BC', 'EAD'] ,
5:['BCEAD'] }
>>> new_dict = dict(map(lambda x:(len(x[1]),x[1]),dict_))
>>> new_dict
{5: ['A', 'B', 'C', 'D', 'E'],
4: ['B', 'C', 'E', 'AD'],
3: ['E', 'AD', 'BC'],
2: ['BC', 'EAD'],
1: ['BCEAD']}
uj5u.com熱心網友回復:
您可以使用values()andlist()函式遍歷原始字典的所有值:
d = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
newD = {}
for i in list(d.values()):
newD[len(i)] = i
print(newD)
輸出: 請注意,如果您有多個相同長度的值,則字典將只有一個鍵。字典中的相同鍵不能超過 1 個
{5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/495551.html
下一篇:如何使字典不將“空白”視為鍵?
