2017-07-31 14 views
1

その単語が含まれている辞書を見つけたいと思います。 リストからの単語がループによって増分しています。 下記の質問が表示されない場合は、ご提案ください。辞書内に単語が存在するかどうかを確認する単語が見つからない

n = int(input()) 

d = {} 

for i in range(n): 
    text = input().split()  
    d[text[0]] = text[1] 

list = [] 

for i in range(n): 
    list.append(input()) 

for i in range(n): 
    ***`if list[i] in d == True:`*** 
     print(d[i]) 

    else: 
     print("Not Found") 
+3

'if list [i] in d'です。あなたの正確な問題は何ですか? –

+1

'd:print(d [list [i]])の中のif list [i]' –

+0

"質問のコメントが出ていない場合は、提案してください。\ *コメント* * –

答えて

4

あなたが問題を突き止め:

if list[i] in d == True: 

list[i] in d == Trueチェーン事業者短絡ファッションでin==(のような(list[i] in d) and (d==True)

dTrue異なるため、グローバルな条件は常にFalseですその言葉は辞書の中にあるのではないようだ。

どちらの括弧(作品、醜い)で保護:

if (list[i] in d) == True: 

や神託の真偽テスト(in dまたはnot in dを使用して、とにかくTrueまたはFalseと比較することはありません)を使用します。ところで

if list[i] in d: 

dには整数キーがないので、COLDSPEEDが記されているように、ここではエラーが発生します:

print(d[i]) # d[list[i]] would be correct (but ugly) 

だからあなたのループは、あなたがそれをしている間に直接の要素に反復する、インデックスを取り払う書き換え(これはlistタイプであるとして変数としてlistを取り払う、lに切り替え):

for item in l: 
    if item in d: 
     print(item) 

よろしいですか?

+0

私は、ブール値を既にブール式から外すために論理演算子を使用する傾向が多くあることは決して理解していません。 –

+1

@FredLarsonええ。あなたはK&R Cでもそれを必要としません...私は知っています。 –

+0

これは問題の半分を解決します。また、整数を使って命令をインデックスするOPの問題があります。 –

関連する問題