您当前的位置:首页 > 计算机 > 编程开发 > Python

python dict转json

时间:01-16来源:作者:点击数:

python小数

可以使用round()函数。

round(a,2)即表示a保留两位小数

张量转常量

深度学习中经常遇到变量和常量转换的问题,可以使用item()函数,

关于x.item()用法:

文档中给了例子,说是一个元素张量可以用item得到元素值,请注意这里的print(x)和print(x.item())值是不一样的,一个是打印张量,一个是打印元素:

x = torch.randn(1)
print(x)
print(x.item())

#结果是
tensor([-0.4464]) # 为张量
-0.44643348455429077 # 为常量
# 

json显示在页面上

# -*- encoding: utf-8 -*-
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    Res['num'] = 1
    Res['bboxes'] = bboxes_n # 参数自己设置,我是用bbox坐标的
    Res['predtime'] = round(r_time, 2)
    # 使用render_template模块来渲染模板文件,通过第二个参数传递数据变量
    # return render_template('day3.html', my_shijei=my_str, myint=my_int, mydict=my_dict, mylist=my_list)
    # 通过**引用来将嵌套dict直接传递给模板
    return render_template('template.html', **Res)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000, debug=True, processes=True)
<!DOCTYPE html>
<title>File Browser</title>
<h1>File Browser</h1>

<p>URL: {{ file_url }}</p>
<p>num: {{ num }}</p>
{% for i in bboxes %}
<p>bbox : {{i}}</p>
{% endfor %}
<p>predtime: {{ predtime }}s</p>

json.dump()报一些float32的错误

json中包含numpy类型等参数时,dumps转换时会报错,需要自己定义一个转换函数。

TypeError: Object of type ‘int64’ is not JSON serializable (或者float32)

# 首先,继承json.JSONEncoder,自定义序列化方法。
class NpEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, np.integer):
            return int(obj)
        elif isinstance(obj, np.floating):
            return float(obj)
        elif isinstance(obj, np.ndarray):
            return obj.tolist()
        else:
            return super(NpEncoder, self).default(obj)
# 使用dumps方法(我们可以直接把dict直接序列化为json对象)加上 cls=NpEncoder,data就可以正常序列化了        
json_res = json.dumps(Res, ensure_ascii=False, cls=NpEncoder)

json 与 dict的读写转换

# dict转json
import json
names = ['joker','joe','nacy','timi']
filename='names.json'
with open(filename,'w') as file_obj:
    json.dump(names,file_obj)

# json文件转dict
filename='names.json'
with open(filename) as file_obj:
    names = json.load(file_obj)
print(names)
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门