2016-04-24 20 views
1

私は各値がオブジェクトのリストである辞書を持っています。これらのリストのそれぞれをオブジェクトの 'weight'属性でソートしようとしています。Python - 辞書の各値を並べ替える

私がオンラインで読んだことはすべて、辞書の各値を並べ替えるだけで、キーまたは値で辞書全体をソートすることについて話しています。

これは私が試したことですが、値リストを変更しているようではありません。理由はわかりません。あなたの問題は(weightを交換して)同じコードとして、ある私のためにどのような作品

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

あなたが投稿したコードは動作するはずです。問題があなたの周囲のコードであるように思われるので、より完全な例を含める必要があります –

+0

体重はおそらく文字列です... –

+0

@JJ、それは間違いなく整数です。より多くのコードを投稿しますが、これはプロジェクトのソリューションで使用されており、他の生徒にコードを渡すことは望ましくありません – johnsmith101

答えて

0

わかりません。だから、おそらく問題は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>) 

は作るためにあなたのコードに主張するの束を入れて考えてみましょう確かに物事は本当にあなたがそれらを期待しています:)

関連する問題