使用循环从列表创建字典

时间:2018-12-24 20:58:03

标签: python python-3.x loops dictionary for-loop

我正在尝试创建一个函数,该函数创建一个字典,给定要输入的列表。 我认为通过使用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 :(得分:1)

对于想要的答案(基于我对问题的理解),我不确定为什么要使用for循环。您不需要在函数中进行循环。只需简单的任务即可完成工作。您不必要地使其复杂化。

SELECT * From (
SELECT * FROM table
UNION ALL
SELECT * FROM table
) as T Order by T.field  DESC ,table.timestamp DESC

答案 1 :(得分:0)

您可以将默认值设置为键[]的空白列表'name' 对于给定的示例,如果要将所有名称分配给键for,则可以不使用'name'循环(@Bazingaa回答)。另一方面,如果要有选择地分配名称,请使用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']}