Python对字典中的每个值进行排序

2024-03-29 14:01:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典,其中每个值都是一个对象列表,我试图通过对象的“weight”属性对这些列表进行排序。你知道吗

我在网上读到的所有内容都是关于按键或值对整个字典进行排序,而我只想对字典中的每个值进行排序。你知道吗

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

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

Tags: 对象lambdakeyin内容列表for字典
2条回答

不确定您的问题是什么,因为相同的代码(替换了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']}

继续评论-如果没有更多的代码,就无法回答您的问题,因为您粘贴的内容是有效的:/

>>> 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>)

考虑在代码中添加一堆断言,以确保事情真正符合您的期望:)

相关问题 更多 >