Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Добрый день.
Мне очень интересно, возможно ли упростить сортировку списка словарей при помощи выражений - генераторов?
Как вариант, я реализовал это классическим методом пузырька.
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
Офлайн
 
							 72
  72   
								
								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'}]Офлайн
 
							 0
  0   
								
								Ой - ё! Как элегантно!
Большое спасибо. А так я сортирую по длине ключа…
sorted(types_array, key=lambda x: len(x.get('key', None)))Офлайн
 
							 72
  72   
								
								JiMKEЕсли ‘key’ нет в словаре получите TypeError, лучше так:
А так я сортирую по длине ключа…sorted(types_array, key=lambda x: len(x.get('key', None)))
sorted(types_array, key=lambda x: len(x.get('key', ())))Офлайн
 
							 0
  0   
								
								Понял, принял, усвоил.
Спасибо=)
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)