首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django2/Python3 3: Django在对dict()排序时引发一个TypeError

Django2/Python3 3: Django在对dict()排序时引发一个TypeError
EN

Stack Overflow用户
提问于 2019-07-14 01:37:50
回答 1查看 55关注 0票数 0

我正在建设一个电子政务网站,我必须过滤产品的价格,有很多关系到位,所以我会直接说我的观点。

  1. 我获取Queryset,然后用它创建一个dict
  2. 然后使用dictsorted()值进行排序。
  3. sorted()工作得很好,我得到了我需要的output
  4. 但是,如果两个产品具有相同的price,则会引发TypeError (可能是因为1>1 ==假的缘故): 打印(D){产品:产品1>:十进制(‘10.00’),<产品:产品2>:十进制(‘10.24’),<产品:产品3>:十进制(‘10.16’),<产品:产品4>:十进制(‘10.00’)} sd =排序((v,k)在d.items() TypeError:‘产品’和‘产品’之间不受支持
  5. 我在普通python中尝试了相同的场景,并且没有引发错误,所以我假设这是一个与Django相关的错误。

那么,如何在我的Error项目的Except块中对抗这个Django呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 01:52:55

您可以对对象id()进行排序,例如:

代码语言:javascript
运行
复制
sd = sorted((v, id(k), k) for (k, v) in d.items())

测试代码

代码语言:javascript
运行
复制
class Class:
    pass

d = {Class(): 10, Class():10}
print(d)
sd = sorted((v, id(k), k) for (k, v) in d.items())
print(sd)

结果:

代码语言:javascript
运行
复制
{<__main__.Class object at 0x0000000000428F98>: 10, <__main__.Class object at 0x00000000022947F0>: 10}
[(10, 4362136, <__main__.Class object at 0x0000000000428F98>), (10, 36259824, <__main__.Class object at 0x00000000022947F0>)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57023963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档