如何在python中通过flask发送deque集合

如何在python中通过flask发送deque集合,python,flask,deque,Python,Flask,Deque,我试图通过一个简单的Flask应用程序中的Flask发送一个装满整数的deque集合 我面临的问题是deque不可序列化 from flask import Flask, jsonify import collections d=collections.deque(maxlen=10) app=Flask(__name__) @app.route('/') def index(): for i in range(10): d.append(i) retu

我试图通过一个简单的Flask应用程序中的Flask发送一个装满整数的deque集合

我面临的问题是deque不可序列化

from flask import Flask, jsonify
import collections


d=collections.deque(maxlen=10)


app=Flask(__name__)
@app.route('/')

def index():
    for i in range(10):
        d.append(i)
    return jsonify(d)

if __name__=='__main__':
    app.run(debug=True)
输出错误为

TypeError: Object of type deque is not JSON serializable

如何序列化要通过flask发送的deque集合?考虑到我需要在另一台python服务器上对通过此deque发送的整数执行一些数学算法。

python deque类似于list(在许多方面)。我所知道的两者之间的主要区别是,使用deque更改操作(如
pop()
)要有效得多


所以你不想用jsonify来代替deque吗?

你可以创建一个自定义编码器,它知道如何将deque转换为JSON:

from json import JSONEncoder
from collections import deque

class DequeEncoder(JSONEncoder):
    def default(self, obj):
       if isinstance(obj, deque):
          return list(obj)
       return JSONEncoder.default(self, obj)
然后像这样使用它:

d = deque(("A", "B", "C"))
json.dumps(d, cls=DequeEncoder)

我有能力通过flask在字典中发送一个列表,它起了作用。但根据我的应用程序,我需要使用deque集合而不是list,因为deque属性(对于append和pop来说是快速和特殊的)。那么有没有可能有一本德克斯词典呢?我不是100%正确,但我想你不能直接。但是当你发送它的时候,你不需要它是一个deque吗?那你为什么不把它转换成一个列表,然后在必要的时候再把它转换成一个deque呢?这也是一个选择,但我想知道是否可以直接发送deque,还是很复杂。无论如何谢谢你