Python - 对字典

时间:2016-04-24 18:33:11

标签: python sorting dictionary

我有一个字典,其中每个值都是一个对象列表,我试图通过对象的'weight'属性对每个列表进行排序。

我在网上阅读的所有内容都谈到了按键或值对整个字典进行排序,而我只想对字典中的每个值进行排序。

这是我尝试过的,但它似乎没有修改价值表,我不知道为什么。

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

2 个答案:

答案 0 :(得分: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']}

答案 1 :(得分: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>)

考虑将一堆断言放入代码中,以确保事情真正符合您的预期:)