【发布时间】:2018-12-24 20:58:03
【问题描述】:
我正在尝试创建一个函数来创建一个字典,给定一个将被输入的列表。 我想通过使用 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 个项目。
【问题讨论】:
-
你真正想要的价值观是什么?
-
在这里阅读:stackoverflow.com/a/53907980/7505395(我的回答)- 类似的问题。在这里:docs.python.org/3/tutorial/datastructures.html#dictionaries。一个键只能保存一个值 - 该值可以是一个包含多个值的列表。如果您多次使用
d["name"]= ...,您会一遍又一遍地覆盖相同的键值...... -
您描述的行为正是每种情况下的预期行为。目前还不清楚你真正想要什么。
-
呀;你是对的。问题是您的最后一次迭代最后将列表的最后一个值分配给字典的“名称”键;并且因为你一直只有那个你正在迭代的密钥;因此这是唯一剩下的键值对。
-
您能明确说明您的预期输出吗?应该是这样的:map = {'name': ['Homer', 'Bart', 'Marge', 'Lisa']} 还是别的什么?
标签: python python-3.x loops dictionary for-loop