2016-04-24 3 views
1

У меня есть словарь, где каждое значение представляет собой список объектов, и я пытаюсь сортировать каждый из этих списков с помощью атрибута 'weight' для объектов.Python - Сортировка каждого значения в словаре

Все, что я читал в Интернете, рассказывает о сортировке всего словаря по ключу или значению, тогда как я просто хочу сортировать каждое значение в словаре.

Это то, что я пробовал, но, похоже, он не изменяет списки значений, и я не уверен, почему.

for key in result: 
    result[key].sort(key=lambda x: x.weight) 
+1

Код, который вы опубликовали, должен работать. Вы должны включить более полный пример, поскольку проблема, похоже, связана с вашим окружающим кодом. –

+0

вес, вероятно, является строкой ... –

+0

@ J.J nope, его определенно целое число, поскольку Ive успешно использовал вес в нескольких других местах. Я бы опубликовал больше кода, но это используется в решении проекта, и я бы не хотел отдавать свой код другим студентам. – johnsmith101

ответ

0

Не уверен, что ваша проблема, как тот же код (с weight заменен) работает для меня. Так, может быть, проблема weight?

result = {1: ['ab', 'abc', 'a'], 2: ['bcd', 'b', 'bc'], 3: ['cde', 'cd', 'c']} 

for key in result: 
    result[key].sort(key=lambda x: len(x)) 

print(result) 
# {1: ['a', 'ab', 'abc'], 2: ['b', 'bc', 'bcd'], 3: ['c', 'cd', 'cde']} 
0

Продолжая от комментариев - есть просто нет возможности ответить на Ваш вопрос без дополнительной кода, потому что вы вставили работы:/

>>> class my_object: 
...  def __init__(self,weight): self.weight = weight 
... 
>>> a = my_object(1) 
>>> b = my_object(2) 
>>> c = my_object(3) 
>>> d = my_object(4) 
>>> my_list = [ c , b, a, d ] 
>>> my_list.sort(key=lambda x: x.weight) 
>>> my_list 
[<__main__.my_object instance at 0x7f285035c8c0>, <__main__.my_object instance at 0x7f285035c908>, <__main__.my_object instance at 0x7f285035c878>, <__main__.my_object instance at 0x7f285035c9e0>] 
>>> a,b,c,d 
(<__main__.my_object instance at 0x7f285035c8c0>, <__main__.my_object instance at 0x7f285035c908>, <__main__.my_object instance at 0x7f285035c878>, <__main__.my_object instance at 0x7f285035c9e0>) 

Рассмотрим положить кучу утверждает в код, чтобы сделать конечно, действительно то, что вы ожидаете от них:

Смежные вопросы