Как сортировать Python dict по значению

У меня есть dict, который выглядит так

{ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 }

И я хотел бы преобразовать его в DESC и создать список только ключевых слов. Например, это вернет

["keyword3" , "keyword1" , "keyword4" , "keyword2"]

Все примеры, которые я нашел, используют лямбда, и я не очень уверен в этом. Есть ли способ, которым я мог бы пройти через это, и сортировать их, когда я иду ? Спасибо за любые предложения.

PS: Я мог бы создать исходный dict по-разному, если бы это помогло.

5 Solutions collect form web for “Как сортировать Python dict по значению”

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

 res = list(sorted(theDict, key=theDict.__getitem__, reverse=True)) 

(Вам не нужен list в Python 2.x)

theDict.__getitem__ фактически эквивалентен lambda x: theDict[x] .

(Лямбда – это просто анонимная функция. Например

 >>> g = lambda x: x + 5 >>> g(123) 128 

Это эквивалентно

 >>> def h(x): ... return x + 5 >>> h(123) 128 

)

 >>> d={ "keyword1":3 , "keyword2":1 , "keyword3":5 , "keyword4":2 } >>> sorted(d, key=d.get, reverse=True) ['keyword3', 'keyword1', 'keyword4', 'keyword2'] 

я всегда делал это так … есть ли преимущества в использовании отсортированного метода?

 keys = dict.keys() keys.sort( lambda x,y: cmp(dict[x], dict[y]) ) 

whoops не читал часть о том, что не использовал лямбда = (

Я бы придумал что-то вроде этого:

 [k for v, k in sorted(((v, k) for k, v in theDict.items()), reverse=True)] 

Но решение KennyTM намного приятнее 🙂

Невозможно отсортировать dict, только чтобы получить представление сортировки dict. Дикты по своей сути беспартийны, но другие типы, такие как списки и кортежи, не являются. Поэтому вам нужно отсортированное представление, которое будет списком, вероятно, списком кортежей. Например,

 ''' Sort the dictionary by score. if the score is same then sort them by name { 'Rahul' : {score : 75} 'Suhas' : {score : 95} 'Vanita' : {score : 56} 'Dinesh' : {score : 78} 'Anil' : {score : 69} 'Anup' : {score : 95} } ''' import operator x={'Rahul' : {'score' : 75},'Suhas' : {'score' : 95},'Vanita' : {'score' : 56}, 'Dinesh' : {'score' : 78},'Anil' : {'score' : 69},'Anup' : {'score' : 95} } sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x 

output: [('Vanita', {'score': 56}), ('Anil', {'score': 69}), ('Rahul', {'score': 75}), ('Dinesh', ' {'score': 78}), ('Anup', {'score': 95}), ('Suhas', {'score': 95})]

  • Python: сортировочный словарь словарей
  • Найти определенные переменные внутри функции и вернуть их отсортированные
  • python: объединить сортировку-функции-item itemterter и str.lower
  • Python: соберите этот словарь (dict in dict)
  • Как оптимизировать или упростить операции по копированию объектов django? (не может использовать модули и типы db)
  • Сортировка списка на основе значений словаря в python?
  • Как отсортировать список объектов datetime или date?
  • Создание подписок из списка элементов списка
  • Python: как читать огромный текстовый файл в памяти
  • Python: сортировка словаря списков
  • Попытка понять алгоритм сортировки вставки
  •  
    Interesting Posts for Van-Lav

    Элегантный поиск сетки в python / numpy

    Максимальное значение в списке списков кортежей

    Вычисление наименьшего положительного целого, не охватываемого никаким набором интервалов

    Может ли класс python возвращать новый экземпляр класса?

    Нечувствительные к регистру уникальные поля модели в Django?

    Как использовать unittest's self.assertRaises с исключениями в объекте генератора?

    Python ftplib отключается

    Как изменить порядок / группировку / уровень столбцов Pandas MultiIndex?

    Как отправить Multipart / связанные запросы в Python на SOAP-сервер?

    Предотвращение ошибки памяти в itertools.permutation

    Круглые столбцы в кадре данных панд

    Создание wxSlider с диапазоном в Linux

    Подкомпоны Vim YouCompleteMe Python не обнаруживаются при завершении TAB в Arch Linux

    локальная переменная, на которую ссылается перед назначением в python, когда я устанавливаю ее глобально

    Центр Google Map На основе геокодированного IP

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