Pythonの深さは辞書キーの対応する値を探して、多層のネストされた辞書の中であなたのデータを見つけます


!!これは直接使える方法です!!
効果を見て!
  • このような多層ネストされた多次元辞書があります:
  • #     
    data = {
        '   ': {
            '        ': {
                '       ': '  ',
                '    ': {
                    '    ': [' !'],
                    '    ': '         ',
                    '     ,         ': '999'
                }
            },
            ' ': '     ',
            '   ': ' '
        },
        '  ': '  ',
        '    ': {
            '  ': '  ',
            '   ': {
                '    ': {
                    ' ': '   '
                }
            }
        }
    }
    
  • もし私たちがデータを取り出したいなら、とても面倒です......
  • #   
         = data['   ']['        ']['    ']['    ']
    
  • そこで面倒を減らすために、私は直接使用できる関数を書きました:
  • #   
         = find('    ', data)
    print(    )[' !']
    
  • がいい!しかし、このdata辞書には2つの名前の同じキーがあります.** **ですが、問題はありませんか.
  • 心配しないで!ご覧ください:
  • #   
         = findAll('    ',data)
    print(    )[{'  ': '  ', '   ': {'    ': {' ': '   '}}}, '         ']
    
  • ええ、関数はキー名に一致するすべての値を直接見つけました.次はこの2つの方法を直接放出します:
  • #      
    def find(target, dictData, notFound='   '):
        queue = [dictData]
        while len(queue) > 0:
            data = queue.pop()
            for key, value in data.items():
                if key == target: return value
                elif type(value) == dict: queue.append(value)
        return notFound
    
    #            ,       
    def findAll(target, dictData, notFound=[]):
        queue = [dictData]
        result = []
        while len(queue) > 0:
            data = queue.pop()
            for key, value in data.items():
                if key == target: result.append(value)
                elif type(value) == dict: queue.append(value)
        if not result: result = notFound
        return result
    
    

    終わります.
    PurePeace 2020年3月24日