2017-04-15 23 views
5

elseステートメントの代わりにdictionaryを使用してステートメントを記述した場合、どのようになりますか?私はこの使用して辞書を書き換えした場合たとえば、私は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(old_rank.iteritems()のx、yのy、x)'のように値を切り替えることができます。 –

+0

'rank.get'を期待どおりに動作させるために*実際には問題になります。 – vaultah

3

あなたはdictObject.get(key, defaultValue)を使用することができます。

だから、あなたの関数に相当するものは次のようになります。辞書のキー/値ペアが逆転していることを

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

注意。

1

dict.getを使用すると、キーが押されたときにはKeyErrorが表示されません。 'シニア'は、まだ辞書に入っていません。

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

year_rank

は私が dict.getを考える「シニア」になります。

はまた、与えられた年がrankでキーが既にあるかどうかを確認するために三項演算子を利用し、このような何かを行うことができますしかし、方法は少し良いです。

関連する問題