FDL*_*FDL 1 python dictionary python-3.x
我有一本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,
}
}
Run Code Online (Sandbox Code Playgroud)
我想把它改造成另一本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
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所做的。
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"
Run Code Online (Sandbox Code Playgroud)
我已经陷入这个阶段了。我得到的错误是KeyError: 'fields'.
我正在使用 python 3.9
可能有一种更优雅的方法来做到这一点,但我认为这在功能上是正确的:
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()]}
Run Code Online (Sandbox Code Playgroud)
编辑:
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()})
Run Code Online (Sandbox Code Playgroud)
这个答案的第一个版本相当无聊,并且可能难以阅读/理解。它还明确依赖于某些字段名称(item1、item2、item3)。这种逐步的方法(希望)更容易理解并且更灵活
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |