zoukankan      html  css  js  c++  java
  • python通过递归将多维字典转化为二维

    输入多维字典

    person = {"male":{"name":"Shawn"}, "female":{"name":"Betty","age":[{"aaaa":123},{"bbbb":234}]},"children":{"name":{"first_name":"李", "last_name":{"old":"明明","now":"铭"}},"age":4}}
    

    方案1

    拼接所有层级key

    def dict_2dm_full(data_json,upperstr=''):
      for key in data_json.keys():
          if isinstance(data_json[key], dict):
              dict_2dm_full(data_json[key],upperstr+key+"_")
          else:
              key_list[upperstr+key]=data_json[key]
      return key_list
    

    输出

    {'male_name': 'Shawn', 'female_name': 'Betty', 'female_age': [{'aaaa': 123}, {'bbbb': 234}], 'children_name_first_name': '李', 'children_name_last_name_old': '明明', 'children_name_last_name_now': '铭', 'children_age': 4}
    

    方案2

    重名key拼接上层key

    def dict_2dm_full_opt(data_json,upperstr=''):
      for key in data_json.keys():
          if isinstance(data_json[key], dict):
              dict_2dm_full_opt(data_json[key],upperstr+key+"_")
          else:
              _key = key
              if key in key_list:
                  _key = upperstr+ _key
              key_list[_key]=data_json[key]
      return key_list
    

    输出

    {'name': 'Shawn', 'female_name': 'Betty', 'age': [{'aaaa': 123}, {'bbbb': 234}], 'first_name': '李', 'old': '明明', 'now': '铭', 'children_age': 4}
    

    方案3

    重名key覆盖

    def dict_2dm_min(data_json):
      for key in data_json.keys():
          if isinstance(data_json[key], dict):
              dict_2dm_min(data_json[key])
          else:
              key_list[key]=data_json[key]
      return key_list
    

    输出

    {'name': 'Betty', 'age': 4, 'first_name': '李', 'old': '明明', 'now': '铭'}
    
  • 相关阅读:
    2014/11/25 函数
    2014/11/24 条件查询
    2、计算器
    1、winform数据库调用(基本方法)
    1、网页基础
    14、函数输出参数、递归
    13、C#简易版 推箱子游戏
    12、函数
    11、结构体、枚举
    10、特殊集合
  • 原文地址:https://www.cnblogs.com/bionexit/p/14730342.html
Copyright © 2011-2022 走看看