0

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

{'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}

为什么是这样?

4

4 回答 4

6

使用d.items()并且您还需要通过变量分别引用键、值。这里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}
于 2015-07-05T06:27:20.573 回答
6

The k value is not changed for every v value, change your code to below:

{k:float(v) for k, v in d.items()}
于 2015-07-05T06:28:31.057 回答
3

Python 字典ititems将是更合适的解决方案。

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

另请阅读dict.items() 与 dict.iteritems()

于 2015-07-05T06:31:26.143 回答
3

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

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

实际上是

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

所以结果是:

{'b': 4.0}
于 2015-07-05T06:32:04.937 回答