2011-07-09 13 views
27

入力文字列の要素をループして辞書から取得しようとしています。私は間違って何をしていますか?TypeError: 'dict'オブジェクトが呼び出せません

number_map = { 1: -3, 2: -2, 3: -1, 4: 1, 5: 2, 6: 3 } 
input_str = raw_input("Enter something: ") 
strikes = [number_map(int(x)) for x in input_str.split()] 

strikes = [number_map(int(x)) for x in input_str.split()] 
TypeError: 'dict' object is not callable 
+0

あなたが与えた例では、このタスクの方が配列が良いと思われます。 –

答えて

4
strikes = [number_map[int(x)] for x in input_str.split()]

あなたはこれらの[]括弧ではなく、これらの()を使用して辞書から要素を取得します。

number_map[int(x)] 

角括弧に注意してください。

1

それはnumber_map[int(x)]だ、あなたが実際にあなたが使用する必要がある1つの引数

4

でマップを呼び出そうとしました!

34

与えられたキーにアクセスするための構文はnumber_map[int(x)]です。 number_map(int(x))は実際には関数呼び出しですが、number_mapは呼び出し可能ではないため例外が発生します。

6
strikes = [number_map[int(x)] for x in input_str.split()] 

大括弧を使用して辞書を検索します。

13

大括弧で辞書にアクセスします。

strikes = [number_map[int(x)] for x in input_str.split()] 
2

辞書の要素にアクセスするには、[]を使用する必要があります。いいえ()

number_map = { 1: -3, 2: -2, 3: -1, 4: 1, 5: 2, 6: 3 } 
input_str = raw_input("Enter something: ") 
strikes = [number_map[int(x)] for x in input_str ]