我現在正在嘗試掌握字典、串列和元組。
我創建了一個基本的哈利波特名字詞典。但是,當我倒置時,它只會在倒置時列印最后一個房子。在嘗試修復它時,我意識到即使我洗掉了一些東西,它仍然只會列印字典中的最后一個串列。
#Character Reference Dictionary
Harry_Potter_Characters ={'Gryfindor':["Harry Potter",'Hermione Granger','Ron Weassley','Neville Longbottom'],
'Hufflepuff':["Nymphadora Tonks",'Newton Scamnder','Helga Hufflepuff','Cedric Diggory'],
'Slytherine':["Leta Lastrange",'Albus Potter','Regulas Black','Tom Riddle'],
'Ravenclaw':["Luna Lovegood",'Filius Flitwick','Sybill Trelawney','Myrtle Warren' ]}
print('Harry Potter Character Roster and House Dictionary',Harry_Potter_Characters)
print("")
#Modified inverse dictionary function
def invert_dict(d):
inverse = dict()
for key in d:
val = d[key]
for sub_key in val:
if sub_key not in inverse:
inverse[sub_key] = [key]
else:
inverse[sub_key]= inverse[sub_key].append(key)
return inverse
print('Inverted dictionary:', invert_dict(Harry_Potter_Characters))
輸出:
Harry Potter Character Roster and House Dictionary {'Gryfindor': ['Harry Potter', 'Hermione Granger', 'Ron Weassley', 'Neville Longbottom'], 'Hufflepuff': ['Nymphadora Tonks', 'Newton Scamnder', 'Helga Hufflepuff', 'Cedric Diggory'], 'Slytherine': ['Leta Lastrange', 'Albus Potter', 'Regulas Black', 'Tom Riddle'], 'Ravenclaw': ['Luna Lovegood', 'Filius Flitwick', 'Sybill Trelawney', 'Myrtle Warren']}
Inverted dictionary: {'Luna Lovegood': ['Ravenclaw'], 'Filius Flitwick': ['Ravenclaw'], 'Sybill Trelawney': ['Ravenclaw'], 'Myrtle Warren': ['Ravenclaw']}
uj5u.com熱心網友回復:
我會這樣寫:
def invert_dict(d):
inverse = {}
for house, names in d.items():
for name in names:
inverse[name] = house
return inverse
uj5u.com熱心網友回復:
內回圈中的縮進問題。它只在最后一次運行一次val。
inverse = dict()
for key in d:
val = d[key]
for sub_key in val: ## This has wrong indent
if sub_key not in inverse:
inverse[sub_key] = [key]
else:
inverse[sub_key]= inverse[sub_key].append(key)
return inverse
如果保證一個人只能屬于一所房子,則您也不需要檢查“非逆”或“如果存在則追加”。但是,對于一個人可能屬于多個房屋的一般情況(例如,反轉一個人在哪個銀行有賬戶),您將需要此邏輯。
uj5u.com熱心網友回復:
只需要將第二個for回圈縮進到第一個回圈中。
你也可以d.items()用來節省你的一步。
def invert_dict(d):
inverse = dict()
for key, val in d.items():
for sub_key in val:
if sub_key not in inverse:
inverse[sub_key] = [key]
else:
inverse[sub_key]= inverse[sub_key].append(key)
return inverse
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/352455.html
上一篇:我應該使用熊貓字典嗎?如何?
