使用python重命名json键属性

时间:2019-04-12 21:37:06

标签: json python-3.x

我正在尝试重命名json数据的键,但是我似乎没有得到我想要的东西。您能指出这个问题吗?

import json

if __name__ == '__main__':

    json_data = [
        {
            "Aa": "A1 value",
            "Ab": "A2 Value",
            "Ac": "0",
            "Ad": "245",
            "Ae": "some value"
        },
        {
            "Aa": "A1 value2",
            "Ab": "A2 Value2",
            "Ac": "1",
            "Ad": "225",
            "Ae": "some value2"
        }
        ]

    vcounter = 1
    for item in json_data:      
        for oldKey,v in item.items():
            newKey = 'X'+str(vcounter)
            #print(newKey)
            item[newKey] = item.pop(oldKey)
            vcounter += 1
        print('Item:'+str(item))
        print('-----------------')
        vcounter = 1

输出

Item:{'Ab': 'A2 Value', 'X4': 'some value', 'X5': 'A1 value', 'X6': '0', 'X7': '245'}
-----------------
Item:{'Ab': 'A2 Value2', 'X4': 'some value2', 'X5': 'A1 value2', 'X6': '1', 'X7': '225'}
-----------------

预期输出 要重命名为X1的键到列表中各项的长度。在这种情况下,它是X1到X5

Item:{'X2': 'A2 Value', 'X5': 'some value', 'X1': 'A1 value', 'X3': '0', 'X4': '245'}
-----------------
Item:{'X2': 'A2 Value2', 'X5': 'some value2', 'X1': 'A1 value2', 'X3': '1', 'X4': '225'}
-----------------

1 个答案:

答案 0 :(得分:1)

假设您使用的是Python 3.7+(按顺序排列了dict键),则可以使用dict理解来迭代dict值的枚举,以使用通过串联{{1 }},并带有枚举索引:

'X'

这将返回:

[{'X%s' % i: v for i, v in enumerate(d.values(), 1)} for d in json_data]