2014-10-10 74 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