美文网首页Python代码阅读
Python代码阅读(第81篇):根据选择器获取嵌套字典的键值

Python代码阅读(第81篇):根据选择器获取嵌套字典的键值

作者: FelixZzzz | 来源:发表于2021-11-24 11:13 被阅读0次

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

    本篇阅读的代码根据给定选择器定义的查询结构(路径),获取嵌套字典中对应的键值。

    本篇阅读的代码片段来自于30-seconds-of-python

    get

    from functools import reduce 
    from operator import getitem
    
    def get(d, selectors):
      return reduce(getitem, selectors, d)
    
    # EXAMPLES
    users = {
      'freddy': {
        'name': {
          'first': 'fred',
          'last': 'smith' 
        },
        'postIds': [1, 2, 3]
      }
    }
    get(users, ['freddy', 'name', 'last']) # 'smith'
    get(users, ['freddy', 'postIds', 1]) # 2
    

    get函数接收一个字典d,和一个选择器(列表形式)selectors,返回由选择器指定的路径的键的值。

    函数使用reduce函数在选择器上逐一使用operator.getitem(a, b)函数,选择器元素的指示,逐一获取嵌套的子字典结构(或最终值)。

    operator模块提供了一套与Python的内置运算符对应的高效率函数。例如,operator.add(x, y)与表达式x+y相同,operator.getitem(a, b)则是返回a上面索引为b的值。

    reduce(getitem, selectors, d)函数将getitem()累计的作用于selectors的元素上,并将d做为左边参数的初始值参与第一次getitem的调用。例如reduce(getitem, [a, b, c], d)是计算getitem(getitem(getitem(d, a), b), c)。也就是从输入字典开始,不断的根据key来获取对应的子字典(或最终值)。

    相关文章

      网友评论

        本文标题:Python代码阅读(第81篇):根据选择器获取嵌套字典的键值

        本文链接:https://www.haomeiwen.com/subject/zpgqzltx.html