为什么 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}
我正在尝试将以下字典中的 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}