Python-创建具有多个键的字典,其中值也是字典

Python-创建具有多个键的字典,其中值也是字典,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我有一本字典: 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]

我有一本字典:

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\u键。
我必须从代码的这一部分开始。

您可以这样做:

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


代码中的错误在中得到了很好的解释。

您的错误在于将
temp\u dict
声明在循环之外。这项工作:

test={"11.67":1,"12.67":2}
indexes=test.keys()
final_dict={}
for index in indexes:
    temp_dict={}
    b=index.split('.')[0]
    temp_dict['value']=b;
    final_dict.update({index:temp_dict})
print (final_dict)

问题是您总是引用同一个对象
temp_dict
,因此对它的任何更改都将反映在它的所有实例中

我建议使用听写理解来解决您的问题,这将使字典创建减少到一行:

final_dict = {idx: {'value': idx.split('.')[0]} for idx in test.keys()}
试试看


{}
->字典理解和旧字符串
“%s”
格式化

将临时目录导入最终目录后,清除临时目录。 祝你好运

test={"11.67":1, "12.67":2, "15.66":3}
indexes = test.keys()
final_dict = {}
temp_dict = {}
for index in indexes:
    b = index.split('.')[0]
    temp_dict['value'] = b
    final_dict[index] = temp_dict
    temp_dict = {}
print(final_dict)

抱歉忘了提到我必须使用索引,因为我从这一部分开始编写代码,还有一个更新:我必须使用索引,这是dict_键。我必须从代码的这一部分开始。然后,对于键入索引,它将是
。(代替钥匙插入测试的
)。
test={"11.67":1, "12.67":2, "15.66":3}
indexes = test.keys()
final_dict = {}
temp_dict = {}
for index in indexes:
    b = index.split('.')[0]
    temp_dict['value'] = b
    final_dict[index] = temp_dict
    temp_dict = {}
print(final_dict)