Найти - Пользователи
Полная версия: Сортировка вложенного списка
Начало » Python для новичков » Сортировка вложенного списка
1
Dobrodel
Здравствуйте все!
Такая задачка, есть список с вложенными списками
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]]
alexsis
>>> data = [12121, [['dog2', 342],['dog4', 254],['dog1', 56436]]]
>>> data[1].sort()
>>> data
[12121, [['dog1', 56436], ['dog2', 342], ['dog4', 254]]]

Так?
Dobrodel
Благодарю за ответ. С одним элементом в списке понятно.
Вопрос в том, что не могу сообразить как отсортировать весь список со множеством вложенных элементов.
Видимо по ключу каким то образом, однако не могу понять как именно?
terabayt
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?
py.user.next
>>> 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]]
>>>
Dobrodel
Благодарю, то что нужно.
Мне подходят оба варианта))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB