将str类型的字典转换为float Python

时间:2018-02-11 02:51:59

标签: python python-3.x postgresql python-2.7

当我尝试查询PostgreSQL数据库并检索只有一列的值然后将其转换为JSON时,会发生一些奇怪的事情:

latitude = Places.query.with_entities(Places.latitude).all()
longitude = Places.query.with_entities(Places.longitude).all()
user_schema = UserSchema(many=True, strict = True)
print user_schema
output = user_schema.dump(latitude).data

output = json.dumps([dict(r) for r in output], default=alchemyencoder)
print output         #[{"latitude": 28.6333}, {"latitude": 28.6333},...]
print type(output)   #<type 'str'>

虽然看起来输出的结果是字典列表并且可以迭代来执行操作但是在迭代这个字典的过程中我遇到了错误:

  

TypeError:字符串索引必须是整数,而不是str

所以,我检查了type(output)它给了我str这是为什么?

此外,当我尝试使用

将其转换为floatint
output = float(output)

我收到错误:

  

ValueError:无法将字符串转换为float:[{“latitude”:28.6333},{“latitude”:28.6333},....]

1 个答案:

答案 0 :(得分:1)

如果您不想要字符串,则不应使用json.dumps()。怎么样:

代码:

[x["latitude"] for x in output]

测试代码:

latitude = Places.query.with_entities(Places.latitude).all()
longitude = Places.query.with_entities(Places.longitude).all()
user_schema = UserSchema(many=True, strict = True)
print user_schema
output = user_schema.dump(latitude).data

print([x["latitude"] for x in output])