2013-04-26 2 views
0

у меня есть словарь два списка, как этотКак я могу отсортировать список с ключами в питоне

obj1 = [mydict['obj1'],mydict['obj2'],mydict['obj3'],mydict['obj4']] 
obj2 = [mydict['obj1'],mydict['obj2'],mydict['obj3'],mydict['obj4'], mydict['obj5'] ] 

Теперь я хочу, что

  1. Подсчитать количество элементов в каждом списке
  2. Тогда на основании того, что больше, чем получить, то список этих объектов

Я хочу, чтобы один список, который содержит два вышеуказанных l IST из (список) словарей на основе большего числа элементов, так что я вызвать что-то вроде этого

mylist = myfunc(objects1, objects2 ) 

MyList должен быть список, как [objects1, objects2] в зависимости от того, кто имеет большее количество объектов.

, что это лучший способ сделать это с меньшим количеством строк кода

Что-то вроде EDIT

mylist = sorted([obj1, obj2], key=lambda a: len(a), reverse=True) 
+0

Боюсь, я не понимаю ваш первый блок кода вообще. Можете ли вы написать пример, который является действительным кодом Python? – Blckknght

+0

Сначала вы должны попробовать написать фактический код. Плюс, я думаю, вы вводите в заблуждение «список» со словарем. –

+0

Я отредактировал вопрос – user2294401

ответ

2

Там нет необходимости использовать функцию лямбда, если он просто будет вызывать функцию так или иначе.

>>> objects1 = [1, 2, 3] 
>>> objects2 = ['1', '2', '3', '4'] 
>>> 
>>> mylist = [objects1, objects2] 
>>> max(mylist, key=len) 
['1', '2', '3', '4'] 

>>> sorted(mylist, key=len, reverse=True) 
[['1', '2', '3', '4'], [1, 2, 3]] 
0
objects1 = [1, 2, 3] 
objects2 = ['1', '2', '3', '4'] 

mylist = [objects1, objects2] 
mylist.sort(key=len, reverse=True) 
print mylist 

[['1', '2', '3', '4'], [1, 2, 3]] 
Смежные вопросы