如何在python中对10亿个元素的列表进行排序

时间:2017-12-05 08:05:43

标签: python sorting

如何在python中对10亿个元素的列表进行排序 请详细说明 假设我们有无限的空间

2 个答案:

答案 0 :(得分:1)

字典无序。它们是哈希表,并且不保证哈希表中键的顺序。

如果您需要订购密钥,请尝试在集合中订购的dict类。

如果您需要对键进行排序,可以将它们放在列表中,然后对列表进行排序。

my_dict = {key: value for key, value in zip(keys, values)} # Example dict
keys = [i for i in my_dict]
keys.sort()

答案 1 :(得分:0)

字典本身不存储键顺序。为此,您必须使用存储插入顺序的OrderedDict

如果您只需要遍历排序的键,则可以使用sorted

for key in sorted(my_dict):
    # output is already sorted by dictionary key
    print key, my_dict[key]

如果您需要指定特殊键或方法,可以将其作为信息传递给已排序。以下示例按值排序:

for key, value in sorted(my_dict.items(), key=lambda x: x[1]):
    # output is sorted by value
    print key, value

使用reversed

可以撤消排序顺序
for key in reversed(sorted(my_dict)):
    # output is already sorted descending by dictionary key
    print key, my_dict[key]

最后,此代码段将使用已排序的键/值对填充OrderedDict:

from collections import OrderedDict
my_ordered_dict = OrderedDict(sorted(my_dict.items(), key=lambda t: t[0]))

自从您将问题从字典更新为列表

排序列表更加简单,只需使用sorted(再次提供一个小方法,如果您有不同的排序键):

sorted_list = sorted(unsorted_list)