“鸭子打字”的定义有点离谱--
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']]