2016-03-30 14 views
2

私は関数を書こうとしています。is_capital(州、都市)は、都市が州の首都であるかどうかをチェックします。それが大文字の場合はtrueを返し、そうでない場合はfalseを返します。州または都市が辞書にない場合は、Falseも返す必要があります。ここで辞書です:辞書のキーと値をチェックする

d = {"New South Wales": "Sydney", 
     "Queensland": "Brisbane", 
     "South Australia": "Adelaide", 
     "Tasmania": "Hobart", 
     "Victoria": "Melbourne", 
     "Western Australia": "Perth"} 

私はそれを返すようにしたいもののいくつかの例は次のとおりです。

>>>print(state_capital("Victoria", "Melbourne")) 
    True 
    >>>print(state_capital("Queensland", "Adelaide")) 
    False 

これについて移動する最良の方法は何ですか?

答えて

2

最初の行は関数ヘッダーです。これは、関数is_capitalが2つの引数:statecityをとることを指定します。 2行目と3行目はifステートメントを構成します。 3行目(ifステートメントの本文)は、ifステートメントの式がTrueの場合にのみ実行されます。

state not in dstatedのキーに含まれていない場合、Trueです。

最後の行は、d[state] == cityの値に応じて、TrueまたはFalseのいずれかを返します。 d[state]は、キーstateに関連付けられている辞書dの値を取得します。 (デフォルトはNoneあるので)

+0

def is_capital(state,city): return d.get(state,None) == city 

またはさらに短い答えます。私はかなり辞書を新しくして、これは多くをクリアします。 – RoadRunner

2
def is_capital(state, city): 
    '''checks whether state in dict keys and city equals to state's corresponding value''' 
    return True if state in d and d[state] == city else False 
+0

ありがとう!私は素早い答えの男に感謝します:) – RoadRunner

3

"ショート" 偉大な答えをうんありがとう

def is_capital(state,city): 
    return d.get(state) == city 
+3

'None'を渡す必要はありません。それはデフォルト、つまりデフォルトです。 – DSM

+1

わかりやすくするために残しておきます(人々が 'None'と表示されていない場合、どのように動作するのか分かりません)。 –

+1

とても簡潔なので私はこれが好きです。しかし、その動作はあまり明確ではありません。 –

関連する問題