2013-11-07 2 views
0

Я пытаюсь перебрать многомерный список в Python, но он не действует так, как я ожидал.Итерация по многомерному списку в 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 

Если бы я сделал подобную вещь с помощью .each в Ruby, было бы передать хэш. Есть ли принципиальная разница в том, как Python и Ruby имеют дело с циклами массива? Или есть лучший способ попробовать итерацию стиля .each в Python?

ответ

1

Это словарь, а не список, так что вы печатаете ключи в вашем примере. Вы можете распечатать значения, а также с помощью следующего кода:

for POI in POIs: 
    print POI, POIs[POI] 
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}]} 
+0

Это отлично, теперь только ждать 10 минут, чтобы принять ответ :) Спасибо @ mtitan8 – Gregology

+0

Великий, рад бы помочь! – mdml

Смежные вопросы