Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2014 14:25:29

Dobrodel
Зарегистрирован: 2014-09-24
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка вложенного списка

Здравствуйте все!
Такая задачка, есть список с вложенными списками

data.append([12121, [['dog2', 342],['dog4', 254],['dog1', 56436]]])
data.append([23423, [['dog10', 452],['dog8', 4445],['dog6', 66]]])

Помогите пожалуйста отсортировать вложенный список, чтобы получить следующий результат:

12121, [['dog1', 56436],['dog2', 342],['dog4', 254]]
23423, [['dog6', 66],['dog8', 4445],['dog10', 452]]

Отредактировано Dobrodel (Окт. 24, 2014 18:44:26)

Офлайн

#2 Окт. 24, 2014 16:32:31

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Сортировка вложенного списка

>>> data = [12121, [['dog2', 342],['dog4', 254],['dog1', 56436]]]
>>> data[1].sort()
>>> data
[12121, [['dog1', 56436], ['dog2', 342], ['dog4', 254]]]

Так?

Офлайн

#3 Окт. 24, 2014 18:43:22

Dobrodel
Зарегистрирован: 2014-09-24
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка вложенного списка

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

Отредактировано Dobrodel (Окт. 24, 2014 18:45:18)

Офлайн

#4 Окт. 24, 2014 20:02:40

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Сортировка вложенного списка

data = []
data.append([12121, [['dog2', 342],['dog4', 254],['dog1', 56436]]])
data.append([23423, [['dog10', 452],['dog8', 4445],['dog6', 66]]])
map(lambda x: x[1].sort(), data)
print data # [[12121, [['dog1', 56436], ['dog2', 342], ['dog4', 254]]], [23423, [['dog10', 452], ['dog6', 66], ['dog8', 4445]]]]
только 10 меньше 6, потому что первая цифра 1
если нужно чтобы ‘dog10’ был больше ‘dog6’, то скажите всегда ли строка начинается с dog?



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Окт. 25, 2014 00:27:41

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

Сортировка вложенного списка

>>> import re
>>> 
>>> lst = [['dog10', 452],['dog8', 4445],['dog6', 66]]
>>> lst.sort(key=lambda i: int(re.search(r'\d+$', i[0]).group()))
>>> lst
[['dog6', 66], ['dog8', 4445], ['dog10', 452]]
>>>



Офлайн

#6 Окт. 25, 2014 09:35:41

Dobrodel
Зарегистрирован: 2014-09-24
Сообщения: 50
Репутация: +  0  -
Профиль   Отправить e-mail  

Сортировка вложенного списка

Благодарю, то что нужно.
Мне подходят оба варианта))

Отредактировано Dobrodel (Окт. 25, 2014 09:35:56)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version