[英]Transforming list to dict with list items as keys and list indices as values in python
[英]Transforming JSON keys and values
我在 python 中有一個簡單的 json,看起來像:
{
"list": [{
"key1": "value1"
},
{
"key1": "value1"
}
]
}
我想將其轉換為以下 json。 任何建議如何在不安裝其他庫的情況下使用 python 來完成?
{
"list": [{
"keys": {
"name": "key1",
"value": "value1"
}
}, {
"keys": {
"name": "key1",
"value": "value1"
}
}]
}
從你的問題中不確定你是否已經將 json 讀入了一個變量,或者它是否在一個文件中。 這是假設你已經在一個變量中了:
in_json = {
"list": [{
"key1": "value1"
},
{
"key2": "value2"
}
]
}
out_json = {"list":[]}
for kd in in_json["list"]:
sub_kd = {"keys": {}}
for k,v in kd.iteritems():
sub_kd["keys"]["name"] = k
sub_kd["keys"]["value"] = v
out_json["list"].append(sub_kd)
print(out_json)
它只是遍歷 json 制作字典以附加到out_json
字典。 你可以用 json 庫使這個打印漂亮,也可以用它保存到文件
您沒有准確指出 JSON 數據的具體內容,因此我在下面的示例代碼中將其全部放入一個字符串中,並使用json.loads()
函數將其轉換為 Python 字典。 如果它在文件中,您可以改用模塊的json.load()
函數。
它還假設"list"
列表中的每個子 JSON 對象僅包含一個鍵/值對,如您的問題所示。
下面的代碼就地更改反序列化的字典,並通過使用json.dumps()
函數重新序列化它來漂亮地打印結果。
請注意,我稍微更改了示例輸入 JSON 中的鍵和值,以便更容易查看它與打印結果之間的對應關系。
import json
json_in = '''
{
"list": [
{
"key1": "value1"
},
{
"key2": "value2"
}
]
}
'''
json_data = json.loads(json_in) # Deserialize.
for i, obj in enumerate(json_data['list']):
# Assumes each object in list contains only one key, value pair.
newobj = { 'name': next(iter(obj.keys())),
'value': next(iter(obj.values()))}
json_data['list'][i] = {'keys': newobj}
print(json.dumps(json_data, indent=4)) # Reserialize and print.
打印結果:
{
"list": [
{
"keys": {
"name": "key1",
"value": "value1"
}
},
{
"keys": {
"name": "key2",
"value": "value2"
}
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.