Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 20, 2013 16:33:36

DevellMen
Зарегистрирован: 2013-04-13
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка 2-х списков.

Привет всем. Есть 2 списка

a = ['мама', 'рама', ' мыла', 'тут', ' там']
b = [3, 6, 1, 9, 2]
То есть в 1-м массиве лежат слова, а в другом частота их повторений.
В итоге нужно сделать список со словами, отсортированными по частоте.
Я сейчас голову сломаю)

Офлайн

#2 Июнь 20, 2013 16:57:48

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Сортировка 2-х списков.

a = ['мама', 'рама', ' мыла', 'тут', ' там']
b = [3, 6, 1, 9, 2]
class Word:
    def __init__(self, word, freq):
        self.word = word
        self.freq = freq
    def __lt__(self, other):
        return self.freq < other.freq
    def __repr__(self):
        return '<{} :{}>'.format(self.word,self.freq)
    
sorted(map(Word,a,b))
Out[3]: [< мыла :1>, < там :2>, <мама :3>, <рама :6>, <тут :9>]

Отредактировано sergeek (Июнь 20, 2013 17:01:44)

Офлайн

#3 Июнь 20, 2013 17:21:17

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Сортировка 2-х списков.

ну или так

from operator import itemgetter
list(map(itemgetter(0), sorted(zip(a, b), key=itemgetter(1))))
Out[8]: [' мыла', ' там', 'мама', 'рама', 'тут']

Офлайн

#4 Июнь 20, 2013 18:09:14

0xKirill
Зарегистрирован: 2013-06-02
Сообщения: 3
Репутация: +  1  -
Профиль   Отправить e-mail  

Сортировка 2-х списков.

или так:

[i[1] for i in sorted(zip(b, a))]

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version