Я новичок в программировании, и я столкнулся с проблемой в джанго.Как отсортировать словарь в django?
Так что я пытаюсь сортировать словарь на основе значения. Я пробовал несколько методов, которые можно увидеть здесь, но для меня ничего не работает. Он работал, чтобы сделать словарь, но я не знаю, почему он не сортируется.
Так что «scoruri» - это словарь: при использовании его в html он отображается следующим образом {User: alex_py: 6, User: ion: 3, User: lil: 1, User: sss: 1, User: ddd: 1, User: bbb: 7}, 'result' - это оценка для каждого пользователя (ключа). Когда я печатаю тип scoruri, он печатает 6 раз (тип «dict»)
Возможно, каждый ключ: значение в scoruri будет на самом деле словарем, поэтому у меня есть словарь словарей?
Ниже приведены методы, которые я попытался отсортировать.
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 %}-->
Некоторое время в декабре Python 3.6 будет выпущен, который имеет словарей, которые всегда отсортированные по умолчанию! – RemcoGerlich
Возможный дубликат [Сортировка словаря Python по значению] (http://stackoverflow.com/questions/613183/sort-a-python-dictionary-by-value) –
привет, я пробовал это: он прокомментирован rezultate = sorted (data ['scoruri']. items(), key = operator.itemgetter (1)), когда я использую {{rezultate}} в своем шаблоне, он ничего не покажет. –