python - 将字典中的字典中的字典中的浮点数转换为int in 字典中的列表
问题描述
我有一个字典数据如下。我想将浮点数转换为整数。我该怎么做?我尝试了几种方法,但无济于事。
数据:
{'ABC': {'2020-09-01': [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]},
'CDE': {'2020-01-01': [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]}}
我要这个:
{'ABC': {'2020-09-01': [{487: (0, 1), 488: (1, 2)}, {489: (0, 1), 481: (1, 2)}]},
'CDE': {'2020-01-01': [{484: (0, 1), 483: (1, 2)}, {482: (0, 1), 481: (1, 2)}]}}
我尝试了这段代码,但我收到了这个错误“RuntimeError:迭代期间字典键发生了变化”:
for i in data:
for date in data[i]:
for model in range(0, len(data[i][date])):
for k, v in data[i][date][model].items():
data[i][date][model][int(k)] = data[i][date][model].pop(k)
解决方案
我认为您的代码很接近,但是正如您所说,您在迭代期间修改了字典键。这是构建中间替换值的一种方法。
d = {
"ABC": {
"2020-09-01": [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]
},
"CDE": {
"2020-01-01": [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]
},
}
print('d before:', d)
for k1,v1 in d.items():
for k2,v2 in v1.items():
v1[k2] = [{int(k4): v4 for k4,v4 in v3.items()} for v3 in v2]
print('d after:', d)
结果:
d before: {'ABC': {'2020-09-01': [{487.0: (0, 1), 488.0: (1, 2)}, {489.0: (0, 1), 481.0: (1, 2)}]}, 'CDE': {'2020-01-01': [{484.0: (0, 1), 483.0: (1, 2)}, {482.0: (0, 1), 481.0: (1, 2)}]}}
d after: {'ABC': {'2020-09-01': [{487: (0, 1), 488: (1, 2)}, {489: (0, 1), 481: (1, 2)}]}, 'CDE': {'2020-01-01': [{484: (0, 1), 483: (1, 2)}, {482: (0, 1), 481: (1, 2)}]}}
推荐阅读
- javascript - 我无法让我的 JavaScript 代码在我的 HTML 文件中工作
- python - 即使整个管道都安装了管道中的 Sklearn 组件?
- gcc - 无法将 COFF 对象链接到葡萄酒
- git - 即使在更新 git index 之后,git status 也会显示已删除的文件
- php - preg_match 删除杂散的 HTML
- c# - c# 中的 FileStream - 检测流位置变化?
- html - 添加一个 js,如果选择了一个下拉菜单,说 yeseg2 添加第三个新的第四个复选框
- wordpress - 激活 ssl 后,混合内容页面:请求不安全的样式表错误
- c# - 从 ApplicationSettings 动态获取值
- python - 通过 PyCharm 安装包会产生“ValueError:源代码字符串不能包含空字节”