web-dev-qa-db-fra.com

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

J'essaie de faire une boucle sur des éléments d'une chaîne d'entrée et de les obtenir à partir d'un dictionnaire. Qu'est-ce que je fais 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
33
Enchanterkeiby

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

44
jena

Accédez au dictionnaire avec des crochets.

strikes = [number_map[int(x)] for x in input_str.split()]
15
W. Kevin Hazzard

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 ]
6
user5536008
strikes  = [number_map[int(x)] for x in input_str.split()]

Utilisez les crochets pour explorer les dictionnaires.

6
Sebastiano Merlino
[]/, et non ces().

4
Oleh Prypin

Vous devez utiliser:

number_map[int(x)]

Notez les crochets!

4
detly

c'est number_map[int(x)], vous avez essayé d'appeler la carte avec un seul argument

1
Karoly Horvath

Changer "()" en "[]" Parce que "()" est utilisé pour les fonctions

0
Ray Hu