获取嵌套值

从字典或列表中获取由给定选择器列表指示的嵌套键的值。

  • 使用functools.reduce()遍历selectors列表。
  • 对于selectors中的每个键,应用operator.getitem(),检索要用作下一次迭代的迭代器的值。
from functools import reduce
from operator import getitem

def get(d, selectors):
  return reduce(getitem, selectors, d)

users = {
  'freddy': {
    'name': {
      'first': 'fred',
      'last': 'smith'
    },
    'postIds': [1, 2, 3]
  }
}
get(users, ['freddy', 'name', 'last']) # 'smith'
get(users, ['freddy', 'postIds', 1]) # 2