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': '铭'}
    
  • 相关阅读:
    Android布局1
    QML 自定义折线图
    QML ChartView 画折线图
    操作系统复习笔记
    Redis的使用
    Git的基本使用
    Python json to excel/csv
    .NET中进行Base64加密解密
    用 IIS 7、ARR 與 Velocity 建设高性能的大型网站
    微信突然出现redirect_uri 参数错误
  • 原文地址:https://www.cnblogs.com/bionexit/p/14730342.html
Copyright © 2011-2022 走看看