我有这本最新的词典:
mydict = { "123.23":10.50, "45.22":53, "12":123 }
我将得到这本词典(键为float):
mydict = { 123:23:10.50, 45.22:53, 12:123 }
我知道我可以遍历键并重新创建这样的新字典:
new_dict = {}
for k in mydict.keys():
new_dict[float(k)]=mydict[k]
但是我希望可以转换字典键“内联”(而不必重新创建新字典)...
最有效的方法是什么?
答案 0 :(得分:1)
我建议您使用一个易于理解的字典理解,如下所示:
my_dict = { "123.23":10.50, "45.22":53, "12":123 }
my_dict = {float(i):j for i,j in mydict.items()}
print(my_dict) # {123.23: 10.5, 45.22: 53, 12.0: 123}
答案 1 :(得分:1)
使用理解力:
new_dict = { float(k): v for k, v in mydict.items() }
答案 2 :(得分:-1)
我希望可以转换字典键“内联”(而不必重新创建新字典)...
最有效的方法是什么?
除非它对您的运行时具有实质性的影响,并且您有时间浪费概要分析和尝试各种配置,但我强烈建议您仅使用dict理解来创建第二个dict,并专注于实际相关的问题:因为dict视图是“实时”在直接迭代键时更新字典可能会有奇怪的副作用,例如您可能会发现自己在第一次迭代原始密钥,然后尝试添加的密钥时对其进行了两次迭代。否则迭代可能会完全中断,因为删除操作会导致内部存储压缩,并且迭代器无效。
因此,要在不创建新字典的情况下更改键类型,您需要先将键复制到列表中,然后将该键和 move 值从一个键迭代到另一个:
for k in list(mydict.keys()):
mydict[float(k)] = mydict.pop(k)
但是,由于删除操作,这可能比创建具有正确布局的新字典更有效,也可能没有效率,因此“优化”将无济于事。