Как отсортировать словарь для печати с самого высокого значения до самого низкого для каждого ключа?

txt будет содержать что-то вроде этого:

Matt Scored: 10 Jimmy Scored: 3 James Scored: 9 Jimmy Scored: 8 .... 

Код, который мне удалось собрать (совершенно новый для python), приведен здесь:

 from collections import OrderedDict #opens the class file in order to create a dictionary dictionary = {} #splits the data so the name is the key while the score is the value f = open('ClassA.txt', 'r') d = {} for line in f: firstpart, secondpart = line.strip().split(':') dictionary[firstpart.strip()] = secondpart.strip() columns = line.split(": ") letters = columns[0] numbers = columns[1].strip() if d.get(letters): d[letters].append(numbers) else: d[letters] = list(numbers) #sorts the dictionary so it has a alphabetical order sorted_dict = OrderedDict(sorted(d.items())) print (sorted_dict) 

И проблема, с которой я столкнулся, заключается в попытке напечатать словарь с именами и баллы от наивысшего до самого низкого, так это то, что оно будет либо печатать имя с наивысшим балл при использовании функции max либо если im с помощью itemgetter это только кажется работа для самых низких до высоких. Поэтому мне было интересно, сможет ли кто-нибудь помочь мне. Все оценивается, объясните, если возможно 🙂

2 Solutions collect form web for “Как отсортировать словарь для печати с самого высокого значения до самого низкого для каждого ключа?”

Вы можете использовать это:

 sorted_dict = OrderedDict( sorted((key, list(sorted(vals, reverse=True))) for key, vals in d.items())) 

Этот фрагмент сортирует имена в алфавитном порядке и оценки для каждого имени от наивысшего до самого низкого. reverse параметр в методах сортировки может использоваться, чтобы заставить порядок от наивысшего до самого низкого.

Например:

 >>> d = {"Matt": [2,1,3], "Rob": [4,5]} >>> OrderedDict(sorted((key, list(sorted(vals, reverse=True))) for key, vals in d.items())) OrderedDict([('Matt', [3, 2, 1]), ('Rob', [5, 4])]) 

Вы можете использовать OrderedDict :

 # regular unsorted dictionary >>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2} # dictionary sorted by value >>> OrderedDict(sorted(d.items(), key=lambda t: t[1])) OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]) 
  • Почему параметр cmp удален из sort / sorted в Python3.0?
  • Сортировка текстового файла по первому столбцу и повторение счетчика python
  • Как работают operator.itemgetter и sort () в Python?
  • Сортировка списка словарей по определенному заказу
  • Ошибка сортировки многомерного словаря, который имеет нечисловые индексы в Python
  • Сортировка словаря в список
  • Нажатие Radix Sort (и python) до его пределов
  • Сортировка значений словаря python
  •  
    Interesting Posts for Van-Lav

    Как получить размер экрана в Tkinter?

    Используя Python для входа на сайт, заполните форму и выйдите из нее.

    Веб-игра в Python + Django и опрос браузера клиента

    Результат вычисления на стороне сервера, но данные сеанса не изолированы для каждого пользователя

    Ошибка Mypy – несовместимые типы в присваивании

    Структура папок для Python Django-REST-framework и Angularjs

    Сохранять пользовательские атрибуты при подгонке подкласса массива numpy

    Как использовать многопроцессорность в python

    Переключение между python 2.7 и python 3.5 в Mac OS X

    Пытаясь заставить PyCharm работать, продолжайте получать «интерпретатор Python не выбран»,

    Почему нельзя использовать «ожидание» в f-строках?

    Почему я не могу присвоить печать python переменной?

    Конкатенация векторов столбцов с использованием массивов numpy

    Python: как читать stdout без блокировки из другого процесса?

    Как удалить удаленные файлы с помощью virtualenv на стеке кедра гегку?

    Python - лучший язык программирования в мире.