Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 11, 2014 16:31:24

electromind
Зарегистрирован: 2013-07-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка словаря

Как отсортировать словарь по значению, а не по ключу ?

Есть словарь вида:
{'googlemail.com': 2, ‘reddit.com’: 2, ‘google.com’: 19, ‘outlook.com’: 4, ‘microsoft.com’: 2, ‘yandex.ru’: 8, ‘mail.ru’: 6, ‘vk.com’: 4}
нужно отсортировать и вывести на печать ключи в порядке убывания значений

Офлайн

#2 Апрель 11, 2014 16:52:55

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Сортировка словаря

dic = {'googlemail.com': 2, 'reddit.com': 2, 'google.com': 19, 'outlook.com': 4, 'microsoft.com': 2, 'yandex.ru': 8, 'mail.ru': 6, 'vk.com': 4}
v_dic =  sorted(list(set([v for k,v in dic.iteritems()])), reverse=True)
print v_dic
for value in v_dic:
    for k, v in dic.iteritems():
        if v == value:
            print k



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Отредактировано ajib6ept (Апрель 11, 2014 23:00:03)

Офлайн

#3 Апрель 11, 2014 22:10:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9966
Репутация: +  856  -
Профиль   Отправить e-mail  

Сортировка словаря

>>> d = {'googlemail.com': 2,
...      'reddit.com': 2,
...      'google.com': 19,
...      'outlook.com': 4,
...      'microsoft.com': 2,
...      'yandex.ru': 8,
...      'mail.ru': 6,
...      'vk.com': 4}
>>> 
>>> lst = [i[1] for i in
...        sorted(((v, k) for k, v in d.items()),
...               reverse=True)]
>>> lst
['google.com', 'yandex.ru', 'mail.ru', 'vk.com', 'outlook.com', 'reddit.com', 'microsoft.com', 'googlemail.com']
>>>



Отредактировано py.user.next (Апрель 11, 2014 22:11:10)

Офлайн

#4 Апрель 11, 2014 23:51:08

bismigalis
Зарегистрирован: 2010-10-02
Сообщения: 449
Репутация: +  47  -
Профиль   Отправить e-mail  

Сортировка словаря

#!/usr/bin/env python
from operator import itemgetter
d = {'googlemail.com': 2, 'reddit.com': 2, 'google.com': 19,
     'outlook.com': 4, 'microsoft.com': 2, 'yandex.ru': 8,
     'mail.ru': 6, 'vk.com': 4}
map(itemgetter(0),
    sorted(d.items(),
           key=itemgetter(1),
           reverse=True))

#!/usr/bin/env hy
(import [operator [itemgetter]])
(def d {"googlemail.com" 2 "reddit.com" 2 "google.com" 19
	"outlook.com" 4 "microsoft.com" 2 "yandex.ru" 8
        "mail.ru" 6 "vk.com" 4})
(map (itemgetter 0)
     (apply sorted 
	    [(.items d)] 
	    {"key" (itemgetter 1) "reverse" True}))

Отредактировано bismigalis (Апрель 12, 2014 12:24:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version