python - Python - 创建具有多个键的字典,其中值也是字典
问题描述
我有一本字典:
test={"11.67":1,"12.67":2}
我想要的输出如下:
{'11.67': {'value': '11'}, '12.67': {'value': '12}}
第二个字典中的值是对键进行拆分时的第一个索引。
我写了这个:
test={"11.67":1,"12.67":2}
indexes=test.keys()
final_dict={}
temp_dict={}
for index in indexes:
b=index.split('.')[0]
temp_dict['value']=b;
final_dict.update({index:temp_dict})
print (final_dict)
但结果是错误的:
{'11.67': {'value': '12'}, '12.67': {'value': '12'}}
不知道出了什么问题。谢谢
还有一个更新: 我必须使用 dict_keys索引。我必须从代码的那一部分开始。
解决方案
你可以这样做:
test = {"11.67": 1, "12.67": 2}
res = {key: {"value": str(int(float(key)))} for key in test}
# {'11.67': {'value': '11'}, '12.67': {'value': '12'}}
我首先将字符串转换为float
s,然后通过使用丢弃小数部分int
并再次转换回str
。
Carsten 的回答很好地解释了您的代码中出了什么问题。
推荐阅读
- python - 解析文本文件时意外覆盖变量(python)
- html - 第二次迭代时反应组件中不必要的填充?
- ios - Mapbox iOS 集群工作,但圆形样式层和数字层没有出现/反映集群的标记密度
- python - 使用自己的数据使用 Tensor2Tensor 训练 Transformer
- javascript - 如何在不验证缓存的情况下更新背景图像
- powershell - Powershell 使用 'out-file' 省略 CRLF 输出
- freertos - OpenVPN + Radius认证如何断开用户连接
- mysql - 使用相关表的正确方法和可能的解决方法?
- javascript - 连续的 html() 调用覆盖第一个
- angular - 无法在 AOT 模式下动态生成的 Angular 模块中的动态生成组件的模板中使用异步管道