如何有效地用函数对排序信息进行排序?

2024-09-28 18:54:42 发布

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

如果我需要对OrderedDict进行排序,我通常会使用这样的语句:

from collections import OrderedDict

# defining a dictionary
od = OrderedDict({'a': 5, 'b': 10, 'c': 7})

# ... some changes like adding new keys, removing old keys, etc.

# sorting the dictionary
od_sorted = OrderedDict(sorted(od.items(), key=lambda e: e[1]))

但是它有一个缺点:我创建了一个新的orderedict实例和list实例(bysorted),如果原始字典很大,那么在内存使用方面可能会非常昂贵。有没有一种方法可以在原始字典中执行排序,而不必创建新实例或其他对象?我本想找到类似od.sort(key=lambda ...)的东西,但没有发现类似的东西:

>>> dir(od)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'move_to_end', 'pop', 'popitem', 'setdefault', 'update', 'values']

当然,我看到了问题How to sort OrderedDict of OrderedDict?。这并没有提到所建议的方法的效率。你知道吗


Tags: 实例方法lambdakeynewdictionary字典排序