当前位置:  开发笔记 > 编程语言 > 正文

当我尝试对列表进行排序时,我得到一个错误'dict'对象没有属性

如何解决《当我尝试对列表进行排序时,我得到一个错误'dict'对象没有属性》经验,为你挑选了1个好方法。

我创建列表的代码是:

choices = []
for bet in Bet.objects.all():
    #...
    #Here is code that skip loop if bet.choice exist in choices[]
    #...
    temp = {
        'choice':bet.choice,
        'amount':bet.sum,
        'count':bets.filter(choice=bet.choice).count()}
    choices.append(temp)

choices.sort(key=attrgetter('choice'), reverse=True)
choices.sort(key=attrgetter('amount'), reverse=True)
choices.sort(key=attrgetter('count'), reverse=True)

我必须按列表排序因为模型orderby()不能按count()排序,可以吗?



1> Martijn Piet..:

你的字典都没有choice,amountcount属性.这些是,所以你需要使用一个itemgetter()对象.

from operator import itemgetter

choices.sort(key=itemgetter('choice'), reverse=True)
choices.sort(key=itemgetter('amount'), reverse=True)
choices.sort(key=itemhetter('count'), reverse=True)

如果要按多个条件排序,只需按以下顺序命名的条件排序一次:

choices.sort(key=itemgetter('count', 'amount', 'choice'), reverse=True)

但是,您可能希望让数据库进行排序.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有