在Python中迭代多维列表

时间:2013-11-07 15:00:42

标签: python ruby multidimensional-array

我试图在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样式迭代?

2 个答案:

答案 0 :(得分:1)

如果在迭代字典时需要除键之外的值,请使用.items().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}]}

答案 1 :(得分:1)

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

for POI in POIs:
    print POI, POIs[POI]