2014-10-10 72 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' 
     } 

謝謝。

+1

你嘗試過什麼?這不是一個代碼寫入服務。 – 2014-10-10 19:13:51

+0

是的,我已經嘗試了一切。我只能弄清楚如何打印一個單獨的值(哪些工作),但是當設置一個for循環時,我得到一個「TypeError:列表索引必須是整數,而不是unicode」錯誤。 – 2014-10-10 19:24:26

+0

您引用的錯誤應包含在您的帖子中。 – 2014-10-10 19:27:15

回答

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

當第一個路要走時,爲什麼還要打擾第二個選項。順便說一句,我不明白downvote ....也許是因爲你應該使用:[people [i] .get('phone','N/A')for my people]但它仍然回答OP的問題 – 2014-10-10 19:17:03

+2

OP問如何做到這一點,特別是使用'for'循環,所以我想我也會拋出這個選項。倒退是因爲人們對不明確的問題感到不滿,並在線索中對所有內容進行了低估,包括答案。坦率地說,我知道downvote即將到來,但我在這裏幫助人們,所以通常我會回答這個問題,如果它不是太多的工作(例如「我怎樣才能做自己的STL?」) – CoryKramer 2014-10-10 19:20:41

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

爲什麼甚至當你可以使用.values()時使用_和.items()? – 2014-10-10 19:24:58

+0

@Apero因爲我正在密集!你是絕對正確的。我會解決它。 – jacg 2014-10-10 19:32:13

0

使用get()方法:

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

究竟誰在壓倒一切?! – 2014-10-10 19:20:31