我有一本 python 字典parsed_dict;
{
"Field name 1": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
},
"Field name 2": {
"item1": -0.01,
"item2": -0.02,
"item3": -0.03,
},
"Field name 3": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
}
}
我想將它轉換成另一個new_dict看起來像這樣的字典;
{
"fields": [
{
"key": "Field name 1",
"label": "Field name 1",
"sortable": true
},
{
"key": "Field name 2",
"label": "Field name 2",
"sortable": true
},
{
"key": "Field name 3",
"label": "Field name 3",
"sortable": true
}
],
"items": [
{
"item1": -0.05,
"item2": -0.06,
"item3": -0.07
},
{
"item1": -0.01,
"item2": -0.02,
"item3": -0.03
},
{
"item1": -0.05,
"item2": -0.06,
"item3": -0.07
}
]
}
這是我到目前為止所做的。
new_dict = {}
for idx, key in enumerate(parsed_dict.keys()):
new_dict['fields'][idx]['key'] = parsed_dict[key]
new_dict['fields'][idx]['label'] = parsed_dict[key]
new_dict['fields'][idx]['sortable'] = "true"
我已經卡在這個階段了。我得到的錯誤是KeyError: 'fields'.
我正在使用 python 3.9
uj5u.com熱心網友回復:
可能有一種更優雅的方法可以做到這一點,但我認為這在功能上是正確的:
newdict = {'fields': [{'key': fn, 'label': fn, 'sortable': True} for fn in parsed_dict],
'items': [{'item1': v['item1'], 'item2': v['item2'], 'items3': v['item3']} for v in parsed_dict.values()]}
編輯:
parsed_dict = {
"Field name 1": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
},
"Field name 2": {
"item1": -0.01,
"item2": -0.02,
"item3": -0.03,
},
"Field name 3": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
}
}
newdict = {'fields': [{'key': fn, 'label': fn, 'sortable': True} for fn in parsed_dict], 'items': []}
for val in parsed_dict.values():
newdict['items'].append({k: v for k, v in val.items()})
這個答案的第一個版本相當輕浮,可能難以閱讀/理解。它還明確依賴某些欄位名稱(item1、item2、item3)。這種逐步的方法(希望)更容易理解和更靈活
uj5u.com熱心網友回復:
我想提一下您的代碼存在一些問題:
首先你不能打電話,因為它在字典new_dict["fields"][idx]中不存在。new_dict
其次,就個人而言,我不會enumerate在你的情況下使用,而是我想items在字典上使用。
因此,我想出了下面的代碼:
parsed_dict = {
"Field name 1": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
},
"Field name 2": {
"item1": -0.01,
"item2": -0.02,
"item3": -0.03,
},
"Field name 3": {
"item1": -0.05,
"item2": -0.06,
"item3": -0.07,
}
}
resultDict = {"fields":[], "items":[]}
new_dict = {"fields":[], "items":[]}
for key, value in parsed_dict.items():
tempFieldDict = {"key":key, "label":key, "sortable": "true"}
new_dict["fields"].append(tempFieldDict)
new_dict["items"].append(value)
new_dict
輸出
{
'fields':
[
{'key': 'Field name 1','label': 'Field name 1','sortable': 'true'},
{'key': 'Field name 2', 'label': 'Field name 2', 'sortable': 'true'},
{'key': 'Field name 3', 'label': 'Field name 3', 'sortable': 'true'}
],
'items':
[
{'item1': -0.05, 'item2': -0.06, 'item3': -0.07},
{'item1': -0.01, 'item2': -0.02, 'item3': -0.03},
{'item1': -0.05, 'item2': -0.06, 'item3': -0.07}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/434487.html
標籤:Python python-3.x 字典
下一篇:無法將字串正確添加到字典中
