TypeError: объект dict не вызывается - PullRequest
35 голосов
/ 09 июля 2011

Я пытаюсь перебрать элементы входной строки и получить их из словаря.Что я делаю не так?

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

Ответы [ 8 ]

45 голосов
/ 09 июля 2011

Синтаксис для доступа к диктовке по заданному ключу number_map[int(x)].number_map(int(x)) на самом деле будет вызовом функции, но поскольку number_map не вызывается, возникает исключение.

16 голосов
/ 09 июля 2011

Доступ к словарю в квадратных скобках.

strikes = [number_map[int(x)] for x in input_str.split()]
9 голосов
/ 07 ноября 2015

Вам необходимо использовать [] для доступа к элементам словаря.Не ()

  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 голосов
/ 09 июля 2011
strikes  = [number_map[int(x)] for x in input_str.split()]

Используйте квадратные скобки для изучения словарей.

4 голосов
/ 09 июля 2011

Вам необходимо использовать:

number_map[int(x)]

Обратите внимание на квадратные скобки!

4 голосов
/ 09 июля 2011
strikes  = [number_map<b>[</b>int(x)<b>]</b> for x in input_str.split()]

Вы получаете элемент из dict , используя эти [] скобки, а не эти ().

1 голос
/ 09 июля 2011

это number_map[int(x)], вы пытались вызвать карту с одним аргументом

0 голосов
/ 30 декабря 2018

Замените "()" на "[]" Поскольку "()" используется для функций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...