Как назначить словарь другому словарю? - PullRequest
1 голос
/ 25 октября 2019

Итак, я хочу создать функцию, которая принимает значения для словаря, создает новый словарь и возвращает его. Затем я хочу присвоить это значение в других местах кода. Но я получаю Тип ошибки DICT объект не вызывается. Как я могу это сделать?

def shoe(brand, model):
    shoe = {}
    shoe['brand'] = brand
    shoe['model'] = model
    return shoe


 shoes_list = []
 shoe = {}

 shoe = shoe('Some Brand', 'Some model')

 print(shoe)

Ответы [ 2 ]

1 голос
/ 25 октября 2019

Вам нужно, чтобы ваша функция и исходный диктет имели разные имена:

def make_shoe(brand, model):
    shoe = {}
    shoe['brand'] = brand
    shoe['model'] = model
    return shoe


 shoes_list = []
 shoe = {}

 shoe = make_shoe('Some Brand', 'Some model')

 print(shoe)

Обратите внимание, что вы не заполняете диктат, сохраненный в shoe;вы делаете новый диктат, чтобы заменить его. Если вы хотите заполнить его, вы должны сделать что-то вроде этого:

def fill_in(brand, model, dest):
    dest['brand'] = brand
    dest['model'] = model


 shoes_list = []
 shoe = {}

 fill_in('Some Brand', 'Some model', shoe)

 print(shoe)
0 голосов
/ 25 октября 2019
def shoe(brand, model):

Здесь вы создаете функцию с именем shoe.

    shoe = {}

Теперь вы создаете переменную с именем shoe и назначаете ей словарь. Это еще не проблема, поскольку эта переменная является локальной внутри функции. Тем не менее, может быть очень запутанным повторное использование одного и того же имени таким образом. Я предлагаю изменить имя этой переменной.

    shoe['brand'] = brand
    shoe['model'] = model
    return shoe


 shoes_list = []
 shoe = {}

Теперь вы переназначаете имя shoe для ссылки на пустой словарь вместо функции, на которую она ссылалась. Это приведет к тому, что последующие вызовы функции с shoe() завершатся неудачно.


 shoe = shoe('Some Brand', 'Some model')

И затем вы попытаетесь присвоить возвращаемое значение функции имени shoe(). Я предполагаю, что это где вызов функции не удается. Обратите внимание, что если вы исправите это, вам вообще не понадобится shoe = {}.


 print(shoe)

Вы используете одно и то же имя для двух разных вещей: один раз для имени вашей функции и один раз для именивашего словаря. Используйте два разных имени, чтобы решить проблему. В общем, имена функций должны быть глаголами. Таким образом, вы можете сделать get_shoe() или create_shoe() для имени функции. Тогда будет хорошо использовать существительное shoe для словаря.

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