当我尝试查询 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: string indices must be integers, not str
所以,我检查了 type(output)
,它给了我 str
,这是为什么?
此外,当我尝试使用
将其转换为float
或 int
时
output = float(output)
我得到一个错误:
ValueError: could not convert string to float: [{"latitude": 28.6333}, {"latitude": 28.6333},....]
最佳答案
如果您不需要字符串,则不应使用 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])
关于python - 将 str 类型的字典转换为 float Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48727819/