Python中的理解
我正在学习一门在线课程,其中一个问题要求我们将基于列表中索引的姓名与基于关键字的理解中的工资与以下列表和字典进行匹配:Python中的理解,python,list-comprehension,Python,List Comprehension,我正在学习一门在线课程,其中一个问题要求我们将基于列表中索引的姓名与基于关键字的理解中的工资与以下列表和字典进行匹配: d = {0:1000.0, 1:1200.50, 2:990} names = ['Larry', 'Curly', 'Moe'] listdict2dict = { ... } 期望输出: {'Larry':1000.0,'Curly':1200.50,'Moe':990} 我写了以下内容: {names[x]:y for x in range(len(names))
d = {0:1000.0, 1:1200.50, 2:990}
names = ['Larry', 'Curly', 'Moe']
listdict2dict = { ... }
期望输出:
{'Larry':1000.0,'Curly':1200.50,'Moe':990}
我写了以下内容:
{names[x]:y for x in range(len(names)) for y in d.values() if x == d.keys()}
返回一个空集
有人能给我一两个提示(不是代码答案)如何解决这个问题吗
谢谢
>>> {name: d[i] for i, name in enumerate(names)}
{'Larry': 1000.0, 'Moe': 990, 'Curly': 1200.5}
您不应该迭代d.values()
-只需使用enumerate
迭代名称,并使用该索引获取d
中的薪资
编辑后:
您的比较x==d.keys()
仍然不起作用x
现在是一个整数,与列表相比没有意义
我认为你只是把它复杂化了。试着记住你的变量是什么类型,以及比较是否有意义
您不应该迭代d.values()
-只需使用enumerate
迭代名称,并使用该索引获取d
中的薪资
编辑后:
您的比较x==d.keys()
仍然不起作用x
现在是一个整数,与列表相比没有意义
我认为你只是把它复杂化了。尽量记住变量的类型以及比较是否有意义。
d.keys()
提供了d
中所有键的列表。当您在名称中对x执行操作时,x是for循环每次迭代中名称
中的一个特定键。因此,x
(始终是一个字符串)从来不是字典中的键列表(不存在字符串s
,因此对于某些列表L
)。因为如果条件总是失败,那么最终会得到一个空集合,请参见编辑到x,它现在是一个整数。int
永远不会等于列表
,无论它们的值是什么。d.keys()
为您提供了d
中所有键的列表。当您在名称
中对x执行操作时,x是for循环每次迭代中名称
中的一个特定键。因此,x
(始终是一个字符串)从来不是字典中的键列表(不存在字符串s
,因此对于某些列表L
)。因为如果条件总是失败,那么最终会得到一个空集合,请参见编辑到x,它现在是一个整数。尽管如此,int
永远不会等于列表
,无论它们的值是什么