0

我正在尝试在 Python 中迭代一个多维列表,但它并没有像我预期的那样运行。

POIs = {'GTA': {'areas': [{'lat': 43.7, 'range': '40km', 'long': -79.416}]}, 'Montreal': {'areas': [{'lat': 45.509, 'range': '40km', 'long': -73.588}]}}

for POI in POIs:
    print POI

这将返回字符串

GTA
Montreal

如果我在 Ruby 中使用 .each 做类似的事情,它会传递哈希值。Python 和 Ruby 处理数组循环的方式有根本区别吗?或者有没有更好的方法来尝试在 Python 中实现 .each 样式迭代?

4

2 回答 2

1

如果在遍历字典时除了键之外还需要值,请使用.items()or .iteritems()。这里的重点是你有一本字典,而不是一个多维的list(多维列表看起来像L = [[1, 2, 3], [4, 5, 6]])。

POIs = {'GTA': {'areas': [{'lat': 43.7, 'range': '40km', 'long': -79.416}]}, 'Montreal': {'areas': [{'lat': 45.509, 'range': '40km', 'long': -73.588}]}}
for POI, areas in POIs.iteritems():
    print POI, areas

输出

GTA {'areas': [{'lat': 43.7, 'range': '40km', 'long': -79.416}]}
Montreal {'areas': [{'lat': 45.509, 'range': '40km', 'long': -73.588}]}
于 2013-11-07T15:02:44.837 回答
1

这是字典而不是列表,因此您在示例中打印键。您也可以使用以下代码打印这些值:

for POI in POIs:
    print POI, POIs[POI]
于 2013-11-07T15:06:27.223 回答