Python 从嵌套字典中按键提取值
有了这个嵌套字典,如何使用for循环打印所有“phone”值Python 从嵌套字典中按键提取值,python,dictionary,for-loop,nested,Python,Dictionary,For Loop,Nested,有了这个嵌套字典,如何使用for循环打印所有“phone”值 people = { 'Alice': { 'phone': '2341', 'addr': '87 Eastlake Court' }, 'Beth': { 'phone': '9102', 'addr': '563 Hartford Drive' }, 'Randy': { 'phone':
people = {
'Alice': {
'phone': '2341',
'addr': '87 Eastlake Court'
},
'Beth': {
'phone': '9102',
'addr': '563 Hartford Drive'
},
'Randy': {
'phone': '4563',
'addr': '93 SW 43rd'
}
使用列表理解
>>> [people[i]['phone'] for i in people]
['9102', '2341', '4563']
或者,如果您想对循环使用
l = []
for person in people:
l.append(people[person]['phone'])
>>> l
['9102', '2341', '4563']
如果要处理缺少的键,请在值上循环,然后使用方法,或者使用简单的索引来访问嵌套值。此外,为了优化,您可以在列表中完成整个过程:
>>> [val.get('phone') for val in people.values()]
['4563', '9102', '2341']
你试过什么吗?这不是代码编写服务。是的,我什么都试过了。我只能知道如何打印一个值(这很有效),但在设置for循环时,我得到了一个“TypeError:列表索引必须是整数,而不是unicode”错误。您引用的错误应该包含在您的帖子中。如果您试图解决这个问题,您应该包括您尝试过的内容和具体问题(包括例外情况和/或完整的堆栈跟踪)。如果第一个选项是可行的,为什么还要麻烦第二个选项呢。顺便说一句,我不理解否决票……可能是因为你应该使用:[people[I]。get('phone',N/A')表示我在people中]但它仍然回答了OP的问题OP的问题是如何做到这一点,特别是使用了一个for
循环,所以我想我也加入了这个选项。否决票是因为人们对定义不清的问题感到不安,并对一条线索中的所有内容进行否决票,包括答案。坦率地说,我知道否决票就要来了,但我在这里支持他lp people out,所以通常我会回答这个问题,如果它不是太多的工作(例如“我如何制作我自己的STL?”)谁在否决所有东西?!为什么在可以使用.values()?@Apero的时候还要使用u和.items(),因为我太密集了!你完全正确。我会解决它。
>>> [val.get('phone') for val in people.values()]
['4563', '9102', '2341']