我正在尝试创建一种排名:有“学生”并且有商品交易。如果该商品是啤酒,则计入beer_list
。
我是手动编写的,但是没有排序:
beer_list = {}
for transaction in Transactions.objects.all():
if transaction.item.beer:
if transaction.student.student_ID in beer_list:
beer_list[transaction.student.student_ID]['beer_count'] += transaction.item_count
else:
beer_list[transaction.student.student_ID] = {
'nickname': (transaction.student.nickname if transaction.student.nickname else 'Anon'),
'beer_count': transaction.item_count
}
我尝试使用进行排序,beer_list = sorted(beer_list.items(), key=lambda x: x[1])
但这引发了错误,该比较不适用于dict到dict用法。
有一个简单的解决方案吗?我在想类似的东西Transactions.objects.filter(item.beer=True)
,然后使用此过滤列表来计算可能带有注释的对象?
由于beer_list
dict的每个值都是一个dict,并且您要按子dictbeer_list
的beer_count
键对项进行排序,因此应使key函数返回beer_count
每个子dict的key值:
beer_list = sorted(beer_list.items(), key=lambda x: x[1]['beer_count'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句