创建列表的我的代码是:
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()排序,可以吗?
最佳答案
您的字典没有choice
,amount
或count
属性。这些是键,因此您需要使用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)
但是,您可能想让数据库进行排序。
关于python - 当我尝试对列表进行排序时,出现错误 'dict'对象没有属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34042961/