73 votes

TypeError : l'objet 'dict' n'est pas appelable

J'essaie de boucler sur les éléments d'une chaîne d'entrée, et de les récupérer dans un dictionnaire. Qu'est-ce que je fais de mal ?

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 votes

D'après l'exemple que vous avez donné, il semble qu'un tableau serait mieux adapté à cette tâche.

72voto

jena Points 1736

La syntaxe pour accéder à un dict en fonction d'une clé est la suivante number_map[int(x)] . number_map(int(x)) serait en fait un appel de fonction mais comme number_map n'est pas un appelable, une exception est levée.

35voto

W. Kevin Hazzard Points 447

Accédez au dictionnaire avec des crochets.

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

24voto

user5536008 Points 221

Vous devez utiliser [] pour accéder aux éléments d'un dictionnaire. Pas ()

  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 ]

0 votes

Dans mon cas, c'est le bon.

11voto

Oleh Prypin Points 9086
strikes  = \[number\_map**\[**int(x)**\]** for x in input\_str.split()\]

Vous obtenez un élément à partir d'un dict en utilisant ces [] parenthèses, pas celles-ci () .

9voto

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

Utilisez les crochets pour explorer les dictionnaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X