Используя цикл, чтобы создать словарь из списка - PullRequest
0 голосов
/ 24 декабря 2018

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

Использование этого списка в качестве входных данных:

simpsons = 'Homer', 'Bart', 'Marge', 'Lisa'

def create_dict_from_list(names):
    name_dict = {}
    for name in names:
        name_dict['name']= name
    return name_dict

Это возвращает только одну пару ключ-значение.Похоже, словари не создают несколько значений, и поэтому он возвращает только одно и не проходит через остальную часть списка.

Когда я изменяю name_dict[name] = name, он создает всеключ, значения, но ключ и значение оба являются именем.

Когда я изменяю name_dict[name] = 'name', я получаю ключ, значение переворачивается, но он возвращает все 4 элемента в списке.

Ответы [ 2 ]

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

Для ответа, который вы хотите (исходя из моего понимания вашего вопроса), я не уверен, почему вы использовали цикл for.Вам не нужны циклы в вашей функции.Просто простое назначение сделает работу.Вы излишне усложнили это.

simpsons = ['Homer', 'Bart', 'Marge', 'Lisa']

def create_dict_from_list(names):
    name_dict = {}
    name_dict['name'] = names # <--- No need of for loop
    return name_dict
create_dict_from_list(simpsons)
# {'name': ['Homer', 'Bart', 'Marge', 'Lisa']}
0 голосов
/ 25 декабря 2018

Вы можете установить значение по умолчанию в виде пустого списка [] для ключа 'name' Для данного примера вполне нормально не использовать цикл for (как ответил @Bazingaa), если вы хотите назначитьвсе имена для ключа 'name'.С другой стороны, если вы хотите выборочно назначать имена, используйте цикл for.

simpsons = 'Homer', 'Bart', 'Marge', 'Lisa'

def create_dict_from_list(names):
    name_dict = {}
    name_dict.setdefault('name',[])
    for name in names:
        name_dict['name'].append(name)
    return name_dict
create_dict_from_list(simpsons)

Выход

{'name': ['Homer', 'Bart', 'Marge', 'Lisa']}
...