Найти - Пользователи
Полная версия: Сортировка массива при помощи выражений - генераторов.
Начало » Python для новичков » Сортировка массива при помощи выражений - генераторов.
1
JiMKE
Добрый день.
Мне очень интересно, возможно ли упростить сортировку списка словарей при помощи выражений - генераторов?
Как вариант, я реализовал это классическим методом пузырька.

types_array =

            n = len(types_array)-1
j = 0
while j < n:
i = 0
while i < n-j:
if len(types_array[i].get('key','N/A')) < len(types_array[i+1].get('key','N/A')):
(types_array[i],types_array[i+1]) = (types_array[i+1],types_array[i])
print '%s - %s'%(len(types_array[i].get('key','N/A')),len(types_array[i+1].get('key','N/A')))
i+=1
j+=1
PooH
In [9]: sorted(types_array, key=lambda x: x.get('value', None))
Out[9]:
[{'key': 'abcde', 'value': '1'},
{'key': 'ab', 'value': '2'},
{'key': 'abc', 'value': '3'},
{'key': 'abcd', 'value': '4'},
{'key': 'a', 'value': '5'}]

In [10]: sorted(types_array, key=lambda x: x.get('key', None))
Out[10]:
[{'key': 'a', 'value': '5'},
{'key': 'ab', 'value': '2'},
{'key': 'abc', 'value': '3'},
{'key': 'abcd', 'value': '4'},
{'key': 'abcde', 'value': '1'}]
JiMKE
Ой - ё! Как элегантно!
Большое спасибо. А так я сортирую по длине ключа…
sorted(types_array, key=lambda x: len(x.get('key', None)))
PooH
JiMKE
А так я сортирую по длине ключа…
sorted(types_array, key=lambda x: len(x.get('key', None)))
Если ‘key’ нет в словаре получите TypeError, лучше так:
sorted(types_array, key=lambda x: len(x.get('key', ())))
JiMKE
Понял, принял, усвоил.
Спасибо=)
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