【问题标题】:Python Edit/Rename Key Names in .jsonPython 编辑/重命名 .json 中的键名
【发布时间】:2018-09-21 12:10:20
【问题描述】:

有没有办法更改密钥名称? 我需要更改名称"Class123",就像在示例中一样。我可以更改值,但我不知道如何更改键名。

示例.json:

{
    "Class123": "classvalue", 
    "name1": {
        "name2": {
            "name3": {
                "Y": 158.8, 
                "X": 201.46
            }, 
            "name4": {
                "Y": 159.68, 
                "X": 200.32
            }
        }
    }
}

这样开始:

with open('my.json') as json1:
    data = json.load(json1)
    for item in data:

【问题讨论】:

  • 您的数据是一本字典。 help(dict)。然后可能会转储 JSON。

标签: python json key rename


【解决方案1】:

没有办法“更改”键名。 您可以做的最好的事情是使用pop 将值复制到另一个键:

d = {'old_name': 1}
d['new_name'] = d.pop('old_name')
print(d)
# {'new_name': 1}

【讨论】:

  • d['new_name'] = d.pop('old_name') 非常感谢它成功了
  • 谢谢!这有帮助。
【解决方案2】:

有点像

your_dict[new_key] = your_dict.pop(old_key)

从您的字典中删除旧密钥并创建一个新密钥。

【讨论】:

    【解决方案3】:

    我想在这里添加我的方法,因为它将单数命名扩展为使用键的字典。

    假设您有一个示例 JSON 列表 ga_list,并且您想使用字典键 names_key 更改所有名称:

    names_key = { 'ga:date'            : 'date' ,
                  'ga:bounceRate'      : 'bounce' ,
                  'ga:newUsers'        : 'new_users', 
                  'ga:pageviews'       : 'page_views',
                  'ga:sessions'        : 'sessions',
                  'ga:uniquePageviews' : 'unique_page_views',
                  'ga:users'           : 'users'
                  }
    
    ga_list = [{
          'ga:bounceRate': 34.478408,
          'ga:date': '20151203',
          'ga:newUsers': 1679,
          'ga:pageviews': 550,
          'ga:sessions': 307,
          'ga:uniquePageviews': 467,
          'ga:users': 256},
        {'ga:bounceRate': 21.28534,
          'ga:date': '20151204',
          'ga:newUsers': 164,
          'ga:pageviews': 594,
          'ga:sessions': 305,
          'ga:uniquePageviews': 476,
          'ga:users': 252},
        {'ga:bounceRate': 13.8372346,
          'ga:date': '20151205',
          'ga:newUsers': 152,
          'ga:pageviews': 826,
          'ga:sessions': 330,
          'ga:uniquePageviews': 241,
          'ga:users': 200}]
    
    for row in ga_list:
      for k, v in names_key.items():
        for old_name in row:
          if k == old_name:
            row[v] = row.pop(old_name)
    
    print(ga_list)
    
    >>>
    [{'bounce': 34.47842608,
      'date': '20151203',
      'new_users': 1679,
      'page_views': 550,
      'sessions': 307,
      'unique_page_views': 467,
      'users': 256},
     {'bounce': 21.28534,
      'date': '20151204',
      'new_users': 164,
      'page_views': 594,
      ....
      'unique_page_views': 241,
      'users': 200}]
    

    你有它所有的旧名称都根据键重命名。

    希望这对某人有所帮助。

    【讨论】:

      【解决方案4】:

      一种方法是使用 replace() 函数,但请确保必须先将 JSON Dict 转换为 String,因为 Dictionary 的键无法更改。

      
      json_data = json_data.replace('key_old1','Key_new1').replace('key_old2','key_new2')
      
      

      希望这会有所帮助。 干杯..!!

      【讨论】:

        猜你喜欢
        • 2012-06-26
        • 2022-12-02
        • 1970-01-01
        • 2023-01-30
        • 2021-11-10
        • 2019-04-11
        • 2019-04-25
        • 1970-01-01
        • 2020-09-12
        相关资源
        最近更新 更多