2017-04-15 110 views
5

如果我要用字典而不是else語句編寫語句,那會是怎樣呢?例如,說我有if/else語句與字典

def determineRank(years): 
    if years == 1: 
     return "Freshman" 
    elif years == 2: 
     return "Sophmore" 
    elif years == 3: 
     return "Junior" 
    else: 
     return "Senior" 

如果我要重寫這個使用字典,這將是

rank = {"Freshman":1, "Sophmore":2, "Junior":3, "Senior", ???} 

我會寫什麼號碼爲別的嗎?

回答

5

使用.get方法使用默認值作爲第二個參數:

rank = {1: 'Freshman', 2: 'Sophmore', 3: 'Junior'} 
rank.get(years, 'Senior') 
+1

是的,除了OP的'rank'字典有年份作爲值,不是鍵 – vaultah

+0

@vaultah沒關係。如果有必要,你可以切換像'rank = dict((y,x)for old_rank.iteritems()中的x,y)'' –

+0

* *爲了使'rank.get'按預期工作,所以它確實很重要。 – vaultah

3

您可以使用dictObject.get(key, defaultValue)

那麼,相當於你的函數是:

rank = {1: "Freshman", 2: "Sophmore", 3:"Junior"}.get(year, "Senior"); 

注意,字典的鍵/值對是相反的。

1

爲了擴展已發佈的內容,使用dict.get將不會引起KeyError, '高級',不在字典裏。

你也可以做這樣的事情,利用三元運算符檢查給定年是否已經在rank的關鍵:

rank = {1: "Freshman", 2: "Sophomore", 3: "Junior"} 
year = 4 
year_rank = rank[year] if year in rank else "Senior" 

year_rank將是「高級」

我覺得dict.get雖然方法稍微好一些。