Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 4, 2015 15:58:06

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

Сортировка слов в списке относительно длинны

Добрый день! Возникла проблема с сортировкой слов в списке относительно их длинны.
Вот мой код:

list1 = ['orange', 'apple', 'banana', 'carrot', 'potato', 'lettuce', 'milk', 'sugar', 'butter', 'flavour']
list1.sort(key=lambda word: len(word))
for i in list4:
    print len(i)
print(list1)
сама сортировка работает. на выходе получаю:
['milk', 'apple', 'sugar', 'orange', 'banana', 'carrot', 'potato', 'butter', 'lettuce', 'flavour']

но вот ответ нужно получить в таком виде:
4: ('milk',),
5: ('apple', ‘flour’, ‘sugar’),
6: ('orange', ‘banana’, ‘carrot’, ‘potato’, ‘butter’),
7: ('lettuce',)


то есть перед строкой со словами стоит число которое показывает сколько букв в этих словах.\

подскажите как это сделать пожалуйста

Отредактировано FishHook (Июнь 4, 2015 16:02:38)

Офлайн

#2 Июнь 4, 2015 16:07:16

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Сортировка слов в списке относительно длинны

#!/usr/bin/env python
# -* coding: utf-8 -*-
from itertools import groupby
list1 = ['orange', 'apple', 'banana', 'carrot', 'potato', 'lettuce', 'milk', 'sugar', 'butter', 'flavour']
list1.sort(key=lambda word: len(word))
print [list(x[1]) for x in groupby(list1, key=lambda x: len(x))]



Офлайн

#3 Июнь 4, 2015 16:15:35

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

Сортировка слов в списке относительно длинны

>>> import itertools
>>> 
>>> lst = ['orange', 'apple', 'banana',
...        'carrot', 'potato', 'lettuce',
...        'milk', 'sugar', 'butter',
...        'flour']
>>> 
>>> lst.sort(key=lambda i: len(i))
>>> d = {n: tuple(g) for n, g in itertools.groupby(lst, len)}
>>> d
{4: ('milk',), 5: ('apple', 'sugar', 'flour'), 6: ('orange', 'banana', 'carrot', 'potato', 'butter'), 7: ('lettuce',)}
>>>



Отредактировано py.user.next (Июнь 4, 2015 16:19:21)

Офлайн

#4 Июнь 4, 2015 23:35:30

codersed
Зарегистрирован: 2015-05-13
Сообщения: 9
Репутация: +  1  -
Профиль   Отправить e-mail  

Сортировка слов в списке относительно длинны

line = ['milk', 'apple', 'sugar', 'orange', 'banana', 'carrot', 'potato', 'butter', 'lettuce', 'flavour']
sort_line = sorted(line, key=len)
for count in sort_line:
    print(len(count), count)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version