理解Python中的理解

时间:2013-07-15 20:15:37

标签: 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)) for y in d.values() if x == d.keys()}

返回一个空集。

有人可以给我一两个提示(不是代码答案)如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:4)

>>> {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现在是一个整数,与列表进行比较没有意义。

我认为你只是过于复杂了。尝试记住变量的类型以及比较是否有意义。