2014-10-10 4 views
0

Учитывая этот вложенный словарь, как я могу распечатать все значения «телефона» с помощью цикла for?Извлечь значения ключом из вложенного словаря

people = { 
    'Alice': { 
     'phone': '2341', 
     'addr': '87 Eastlake Court' 
     }, 

    'Beth': { 
     'phone': '9102', 
     'addr': '563 Hartford Drive' 
     }, 

    'Randy': { 
     'phone': '4563', 
     'addr': '93 SW 43rd' 
     } 

Thanks.

+1

Пытались ли вы что-нибудь? Это не служба написания кода. –

+0

Да, я пробовал все. Я могу только вычислить, как печатать одно значение (которое работает), но при настройке цикла for я получаю «Индексы типа TypeError: list должны быть целыми, а не unicode». –

+0

Ошибка, с которой вы ссылаетесь, должна быть включена в ваше сообщение. –

ответ

2

Используя список понимание

>>> [people[i]['phone'] for i in people] 
['9102', '2341', '4563'] 

Или, если вы хотите использовать for петлю.

l = [] 
for person in people: 
    l.append(people[person]['phone']) 

>>> l 
['9102', '2341', '4563'] 
+0

Зачем даже беспокоиться о втором варианте, когда первым является путь. BTW Я не понимаю нисходящего ... возможно, потому что вы должны использовать: [people [i] .get («phone», «N/A») для i в людях], но он все еще ответил на вопрос OP –

+2

OP вопрос спросил, как это сделать, в частности, используя цикл 'for', поэтому я подумал, что я тоже заброшу эту опцию. Сдвиг - это то, что люди расстраиваются из-за неопределенных вопросов и переходят все в нить, включая ответы. Честно говоря, я знаю, что приближается нисходящий поток, но я здесь, чтобы помочь людям, поэтому обычно я отвечу на вопрос, не слишком ли много работает (например, «Как я могу сделать свой собственный STL?») – CoryKramer

3
for d in people.values(): 
    print d['phone'] 
+1

Почему даже используя _ и .items(), когда вы можете использовать .values ​​()? –

+0

@Apero Потому что я был плотным! Вы абсолютно правы. Я исправлю это. – jacg

0

Используйте get() метод:

>>> [val.get('phone') for val in people.values()] 
['4563', '9102', '2341'] 
+0

Кто черт все вниз! –

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