从字典两级深入获取价值

时间:2017-06-07 00:15:51

标签: python dictionary

在字典中获取子键值的优雅方法是什么,但只有在使用python存在两个键级别时才会这样?

例如,我想获得' team'的价值。来自爸爸'。因此,如果爸爸不存在,它应该不返回,否则继续寻找子键'团队'如果不存在则返回none,否则返回该值。

是否有一种简单的方法可以编写一个递归函数,我只是传递一个名称数组然后查看,如果它遇到一个丢失的键,它只返回一个定义的默认值。

我知道我现在可以做

dict.get('dad', None)

我希望能够做这样的事情

dict.get(['dad','team'], None)

字典

{  
   "dad":{  
      "team":"packers"
   },
   "mom":{  
      "show":"rugrats",
      "vehicle":"buggy"
   }
}

1 个答案:

答案 0 :(得分:5)

dict.get('dad', {}).get('team', None)

这恰好是两个级别。在一般情况下,您可以

def recurGet(d, ks): 
  head, *tail = ks 
  return recurGet(d.get(head, {}), tail) if tail else d.get(head)

head, *tail = ks是Python 3.在Python 2中,您必须将其明确写为

  head = ks[0]
  tail = ks[1:]