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

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)]) 
  • Идентификация значений, имеющих максимальное количество ключей
  • Python: сортировочный словарь словарей
  • Как я могу сортировать словарь по ключу?
  • Как отсортировать словарь: список по значениям в списке?
  • Несогласованная сортировка с сортировкой ()
  • список сортировки в python
  • Numpy: сортировка по ключевым функциям
  • Ошибка сортировки многомерного словаря, который имеет нечисловые индексы в Python
  •  
    Interesting Posts for Van-Lav

    Почему простые математические операции с возвратом с плавающей запятой неожиданно (неточно) приводят к VB.Net и Python?

    Вызов «del» по результату вызова функции вызывает «SyntaxError: не может удалить вызов функции»

    Изучите Python на жестком пути – упражнение 24

    Разница между логической строкой и физической строкой в ​​python

    Объединение 2 файлов csv

    Как развернуть пользовательский образ докеров на Elastic Beanstalk?

    Как я могу установить формат DateField в django из модели?

    В Pika или RabbitMQ, как проверить, потребляют ли потребители в настоящее время?

    Пример регулярного выражения Python

    Синтаксическая ошибка Python при определении сопоставления

    Запрос встроенного документа Mongo

    Как проверить, если заданная метка времени находится в секундах или миллисекундах?

    Протокол Итератора. Это Темная Магия?

    как перезагрузить класс в оболочке python?

    python3: ImportError: нет модуля с именем xxxx

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