我正在尝试转换为以下字典中floats
的string
值(最初应该表示为浮点数):
{'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}
为什么是这样?
我正在尝试转换为以下字典中floats
的string
值(最初应该表示为浮点数):
{'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()
并且您还需要通过变量分别引用键、值。这里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}
The k
value is not changed for every v
value, change your code to below:
{k:float(v) for k, v in d.items()}
Python 字典ititems将是更合适的解决方案。
{k:float(v) for k, v in d.iteritems()}
您的k
变量包含'b'
出于某种原因。因此你的表达
{k:float(v) for v in d.values()}
实际上是
{'b': float(v) for v in d.values()}
所以结果是:
{'b': 4.0}