首页 > 解决方案 > 在 Python 中将数据结构转换为另一个数据结构

问题描述

我面临将 Python 中的一种数据结构转换为另一种数据结构(我认为是 JSON)的问题。Python中有一些聪明的方法可以解决这个问题吗?也许是一些地图系统?我可以采取什么方法来转换来自 CSV 文件的字典

{
   "id":1,
   "surname":"Einstein",
   "givennames":"Albert",
   "dateofbirth":"27/08/2007",
   "address":"11 Willow Road,BOSTON MANOR",
   "postcode":"AXT 5JA",
   "mobile":"078 1453 6934"
}

进入以下结构...

[
   {
      "metadata":{
         "type":"pole_model",
         "version":"0.1"
      },
      "party":[
         {
            "source_system":"A",
            "source_id":"1",
            "person":{
               "surname":"Einstein",
               "given_names":"Albert",
               "date_of_birth":"27/08/2007"
            }
         }
      ],
      "location":[
         {
            "source_system":"A",
            "source_id":"1",
            "address":{
               "line_1":"11 Willow Road,BOSTON MANOR",
               "postcode":"AXT 5JA"
            }
         },
         {
            "contact":{
               "source_system":"A",
               "source_id":"1",
               "phone":{
                  "mobile":"078 1453 6934"
               }
            }
         }
      ]
   }
]

标签: jsonpython-3.xdictionaryconverters

解决方案


这是一种将源数据插入模板的简单方法。和值可以另外传递到函数中metadatasource_system

def convert(source):
    return {
      "metadata": {
         "type": "pole_model",
         "version": "0.1"
      },
      "party":[
         {
            "source_system": "A",
            "source_id": str(source["id"]),
            "person":{
               "surname": source["surname"],
               "given_names": source["givennames"],
               "date_of_birth": source["dateofbirth"]
            }
         }
      ],
      "location":[
         {
            "source_system": "A",
            "source_id": str(source["id"]),
            "address":{
               "line_1": source["address"],
               "postcode": source["postcode"]
            }
         },
         {
            "contact":{
               "source_system": "A",
               "source_id": str(source["id"]),
               "phone":{
                  "mobile": source["mobile"]
               }
            }
         }
      ]
   }

推荐阅读