烧瓶:类型错误:'<' not supported between instances of 'int' and 'str'

问题描述 投票:0回答:1

在我的 Flask 后端,我收到一个字典,它被处理并添加到不同的字典中。

    def updateIncomeExpenses(self, incomingUpdate):
        '''
        The list of dicts are iterated over, and dicts are added to their respective lists.
            Parameter:
            incomingUpdate (list): A list of dictionaries with entries that are either incomes or expenses
        '''
        self.__latestUpdate = incomingUpdate

        for item in self.__latestUpdate:
            item = {key:val for key,val in item.items() if val != None}
            if item.get("incomes"):
                item["incomes"] = float(item.get("incomes"))
                self.__incomes[item.get("id")] = item
                self.__incomes["summary"] += item.get("incomes")
            elif item.get("expenses"):
                item["expenses"] = float(item.get("expenses"))
                self.__expenses[item.get("id")] = item
                self.__expenses["summary"] += item.get("expenses")
            elif item.get("savings"):
                item["savings"] = float(item.get("savings"))
                self.__savings[item.get("id")] = item
                self.__savings["summary"] += item.get("savings")
            elif item.get("investments"):
                item["investments"] = float(item.get("investments"))
                self.__investments[item.get("id")] = item
                self.__investments["summary"] += item.get("investments")

即使我不进行任何比较,也会引发以下错误,并且回溯无法帮助我找到它。

错误:类型错误:'<' not supported between instances of 'int' and 'str'

追溯:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    return self.finalize_request(rv)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1969, in finalize_request
    response = self.process_response(response)
  File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2268, in process_response
    self.session_interface.save_session(self, ctx.session, response)
  File "/usr/local/lib/python3.8/site-packages/flask/sessions.py", line 378, in save_session
    val = self.get_signing_serializer(app).dumps(dict(session))
  File "/usr/local/lib/python3.8/site-packages/itsdangerous/serializer.py", line 207, in dumps
    payload = want_bytes(self.dump_payload(obj))
  File "/usr/local/lib/python3.8/site-packages/itsdangerous/url_safe.py", line 53, in dump_payload
    json = super().dump_payload(obj)
  File "/usr/local/lib/python3.8/site-packages/itsdangerous/serializer.py", line 169, in dump_payload
    return want_bytes(self.serializer.dumps(obj, **self.serializer_kwargs))
  File "/usr/local/lib/python3.8/site-packages/flask/json/tag.py", line 305, in dumps
    return dumps(self.tag(value), separators=(",", ":"))
  File "/usr/local/lib/python3.8/site-packages/flask/json/__init__.py", line 211, in dumps
    rv = _json.dumps(obj, **kwargs)
  File "/usr/local/lib/python3.8/json/__init__.py", line 234, in dumps
    return cls(
  File "/usr/local/lib/python3.8/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/local/lib/python3.8/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
TypeError: '<' not supported between instances of 'int' and 'str'

这让我很困惑,如果有人知道这可能是什么,我会很高兴。

python python-3.x flask
1个回答
0
投票

万一有人偶然发现这个问题,为我解决的问题是我不小心有一个布尔值而不是字符串的键。这似乎导致了问题。

基本上如果你有这样的:

key1="question"
value1="answer"
key2="is_answered"
value2=True
data={
    key1:value1,
    value2:value2,
}
jsonify(data)

需要像这样修复它:

key1="question"
value1="answer"
key2="is_answered"
value2=True
data={
    key1:value1,
    key2:value2,
}
jsonify(data)
© www.soinside.com 2019 - 2024. All rights reserved.