2011-07-09 21 views
27

Estoy tratando de recorrer los elementos de una cadena de entrada, y obtenerlos de un diccionario. ¿Qué estoy haciendo mal?TypeError: el objeto 'dict' no se puede llamar

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

Según el ejemplo que dio, parece que una matriz sería mejor para esta tarea. –

Respuesta

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

Usted recibe un elemento de una dict el uso de estos [] soportes, éstos no ().

1

es number_map[int(x)], en realidad se trató de llamar al mapa con un argumento

4

Es necesario utilizar:

number_map[int(x)] 

Nota los corchetes!

34

La sintaxis para acceder a un dict dada una clave es number_map[int(x)]. number_map(int(x)) sería en realidad una llamada a función, pero como number_map no es un llamante, se genera una excepción.

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

Utilice corchetes para explorar los diccionarios.

13

Acceda al diccionario con corchetes.

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

Debe usar [] para acceder a los elementos de un diccionario. No ()

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 ] 
Cuestiones relacionadas