【发布时间】:2016-11-17 08:52:51
【问题描述】:
我是编程新手,在 django 中遇到了问题。
所以我试图根据值对字典进行排序。我尝试了这里看到的几种方法,但对我来说没有任何效果。它可以制作字典,但我不知道为什么它没有排序。
所以 'scoruri' 是字典:当在 html 中使用它时,它显示如下 {User: alex_py: 6, User: ion: 3, User: lil: 1, User: sss: 1, User: ddd: 1 , user: bbb: 7}, 'result' 是每个'user'(key)的得分。 当我打印 scoruri 的类型时,它会打印 6 次(输入“dict”)
scoruri 中的每个 key:value 可能实际上是一个字典,所以我有一个字典字典?
以下是我尝试排序的方法。
views.py
def home(request):
data = dict()
data['users'] = User.objects.all()
data['scoruri'] = dict()
if request.method == "POST":
for key in request.POST:
if 'nota_' in key:
nota_acordata = Punctaj.objects.filter(acordat_de=request.user,
acordat_catre__id=key.split('_')[1]).first()
if nota_acordata:
nota_acordata.nota = request.POST.get(key)
nota_acordata.save()
else:
Punctaj.objects.create(acordat_de=request.user,
acordat_catre_id=key.split('_')[1],
nota=request.POST.get(key))
messages.success(request, "Successfully Voted")
return redirect('home')
for user in data['users']:
suma = Punctaj.objects.filter(acordat_catre=user).aggregate(punctaj=Sum('nota')).get("punctaj")
count = Punctaj.objects.filter(acordat_catre=user).count()
if not suma:
result = 0
else:
result = int(suma)/count
data['scoruri'][user] = result
# sorted(data['scoruri'].items())
# rezultate = sorted(data['scoruri'].items(), key=operator.itemgetter(1))
print(type(data['scoruri']))
return render(request, "login/home.html", data)
模板
{{ scoruri }}
<!--{{ rezultate }}-->
<!--{% for key, value in scoruri %}-->
<!--{{ key }}:{{ value }}-->
<!--{% endfor %}-->
【问题讨论】:
-
12 月的某个时候 Python 3.6 将会发布,它的字典总是默认排序的!
-
嗨,我试过了:当我使用 {{ rezultate } } 在我的模板中,它不会显示任何内容。
标签: django python-3.x sorting dictionary django-views