为什么 Python 字典理解会忽略字典中的第一个元素?

Why is a Python dict comprehension ignoring the first element in the dict?

我正在尝试将以下字典中的 string 值(最初应该表示为浮点数)转换为 floats

{'a': '1.3', 'b': '4'}

如果我尝试听写理解:

{k:float(v) for v in d.values()}

我最后只得到字典中的第二项:

In [191]: {k:float(v) for v in d.values()}
Out[191]: {'b': 4.0}

这是为什么?

使用d.items()并且还需要通过变量分别引用key,value。这里 k 指的是键,v 指的是值。

{k:float(v) for k,v in d.items()}

示例:

>>> d = {'a': '1.3', 'b': '4'}
>>> {k:float(v) for k,v in d.items()}
{'a': 1.3, 'b': 4.0}

每个 v 值都不会更改 k 值,请将您的代码更改为以下内容:

{k:float(v) for k, v in d.items()}

Python 词典 iteritems 将是更合适的解决方案。

{k:float(v) for k, v in d.iteritems()}

另读dict.items() vs dict.iteritems()

出于某种原因,您的 k 变量包含 'b'。因此你的表达

{k:float(v) for v in d.values()}

实际上是

{'b': float(v) for v in d.values()}

所以结果是:

{'b': 4.0}