我有一本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

推荐答案

我想指出的是,您的代码存在一些问题:

首先,你不能打new_dict["fields"][idx],因为new_dict字典里没有new_dict["fields"][idx].

第二,就个人而言,我不会在你的情况下使用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

Output

{
  '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}
   ]
}

Python相关问答推荐

为什么我的代码会进入无限循环?

Docker-compose:为不同项目创建相同的容器

有没有方法可以修复删除了换码字符的无效的SON记录?

Python主进程和分支进程如何共享gc信息?

不允许AMBIMA API请求方法

如何销毁框架并使其在tkinter中看起来像以前的样子?

DuckDB将蜂巢分区插入拼花文件

理解Python的二分库:澄清bisect_left的使用

如何计算两极打印机中 * 所有列 * 的出现次数?

使用FASTCGI在IIS上运行Django频道

为什么tkinter框架没有被隐藏?

如何找到满足各组口罩条件的第一行?

pandas滚动和窗口中有效观察的最大数量

用合并列替换现有列并重命名

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

使用groupby Pandas的一些操作

从嵌套的yaml创建一个嵌套字符串,后面跟着点

如何保持服务器发送的事件连接活动?

基于行条件计算(pandas)

幂集,其中每个元素可以是正或负""""