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

これはリストではなく辞書であるため、例でキーを出力しています。次のコードを使用して、値を出力することもできます。

for POI in POIs:
    print POI, POIs[POI]
于 2013-11-07T15:06:27.223 に答える
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}]}
于 2013-11-07T15:02:44.837 に答える