从字典两级深入获取价值

Jok*_*ini 2 python dictionary

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

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

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

我知道我现在可以做

dict.get('dad', None)
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情

dict.get(['dad','team'], None)
Run Code Online (Sandbox Code Playgroud)

字典

{  
   "dad":{  
      "team":"packers"
   },
   "mom":{  
      "show":"rugrats",
      "vehicle":"buggy"
   }
}
Run Code Online (Sandbox Code Playgroud)

Mal*_*lio 6

dict.get('dad', {}).get('team', None)
Run Code Online (Sandbox Code Playgroud)

这恰好有两个层次.在一般情况下,你可以

def recurGet(d, ks): 
  head, *tail = ks 
  return recurGet(d.get(head, {}), tail) if tail else d.get(head)
Run Code Online (Sandbox Code Playgroud)

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

  head = ks[0]
  tail = ks[1:]
Run Code Online (Sandbox Code Playgroud)