2016-04-24 71 views
1

我有一個字典,其中每個值都是對象列表,我試圖按照對象的「權重」屬性對每個列表進行排序。Python - 對字典中的每個值進行排序

我在線閱讀的所有內容都是關於按鍵或值對整個字典進行排序的討論,而我只是想對字典中的每個值進行排序。

這是我試過的,但它似乎並沒有修改值列表,我不知道爲什麼。

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

你發佈的代碼應該工作。你應該包括一個更完整的例子,因爲問題似乎與你的代碼 –

+0

重量可能是一個字符串...... –

+0

@ J.J nope,它肯定是一個整數,因爲我已經成功地在其他幾個地方使用了權重。我會發布更多的代碼,但這是用於項目解決方案,我不想將我的代碼給其他學生 – 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>) 

考慮把一堆斷言到您的代碼,以使肯定的事情真的是你期望他們:)

相關問題