私信  •  关注

Chris Barker

Chris Barker 最近创建的主题
Chris Barker 最近回复了
9 年前
回复了 Chris Barker 创建的主题 » 迭代python字典[重复]

“鸭子打字”的定义有点离谱-- dict.keys() 返回一个iterable对象,而不是一个类似列表的对象。它可以在任何一个iTable可以工作的地方工作——而不是列表可以工作的地方。列表也可以是iterable,但iterable不是列表(或序列…)

在实际的用例中,使用dict中的键最常见的事情是迭代它们,所以这是有意义的。如果你确实需要它们作为一个列表,你可以打电话给 list() .

非常类似于 zip() --在绝大多数情况下,它是迭代的——为什么创建一个完整的新的元组列表来迭代它,然后再次丢弃它?

这是Python使用更多迭代器(和生成器)而不是各地列表副本的大趋势的一部分。

听写键() 不过,应该理解——仔细检查是否有打字错误或其他什么…它对我来说很好:

>>> d = dict(zip(['Sounder V Depth, F', 'Vessel Latitude, Degrees-Minutes'], [None, None]))
>>> [key.split(", ") for key in d.keys()]
[['Sounder V Depth', 'F'], ['Vessel Latitude', 'Degrees-Minutes']]