我有一个名为“location”的字典,如下所示:
{
'WA': [
'47.3917',
'-121.5708'
],
'VA': [
'37.7680',
'-78.2057'
],
...
}
我想转换为值为float的值,因此它看起来像:
{
'WA': [
47.3917,
-121.5708
],
'VA': [
37.7680,
-78.2057
],
...
}
我试过
for key in location.keys():
location[key] = float(location[key][0,1])
print location
它让我觉得“float()参数必须是字符串或数字”
我该如何解决?
答案 0 :(得分:5)
您可以使用字典理解来构造一个字典,其值已转换为浮点数,如此
print {k:map(float, locations[k]) for k in locations}
正如@Grijesh in the comments section所建议的,如果您使用的是Python 3,
print({k:list(map(float, locations[k])) for k in locations})
答案 1 :(得分:3)
您的问题出在此处:float(location[key][0,1])
# float objects are length 1
for key in location.keys():
location[key] = [float(location[key][0]),float(location[key][1])]
print location
答案 2 :(得分:0)
您可以在字典理解中使用列表理解 。由于您既需要键也需要值,因此请使用dict.items
来迭代键值对:
res = {k: [float(x) for x in v] for k, v in locations.items()}
map
与内置组件一起使用时效率更高,因此您不妨使用:
res = {k: list(map(float, v)) for k, v in locations.items()}
或者,因为有了坐标,所以可以使用元组值:
res = {k: tuple(map(float, v)) for k, v in locations.items()}
您的逻辑location[key][0,1]
的问题在于Python列表不支持向量化索引,因此您需要明确说明,例如详细的[float(location[key][0]), float(location[key][1])]
。