Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中对10亿个元素的列表进行排序_Python_Sorting - Fatal编程技术网

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

如何在python中对10亿个元素的列表进行排序,python,sorting,Python,Sorting,如何在python中对10亿个元素的列表进行排序 请详细说明 假设我们有无限的空间 感谢您的回答,但是,这个问题是从优化排序算法的角度提出的,而不是在python上工作。这个问题是在一次采访中提出的,在有大量元素的情况下,可能是整数或字符串,这可能不会在现实世界中使用,因为我们有分页等技术。字典是无序的。它们是哈希表,不能保证哈希表中键的顺序 如果需要对密钥进行排序,请在集合中尝试ordered dict类 如果需要对键进行排序,可以将它们放在列表中,然后对列表进行排序 my_dict = {k

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


感谢您的回答,但是,这个问题是从优化排序算法的角度提出的,而不是在python上工作。这个问题是在一次采访中提出的,在有大量元素的情况下,可能是整数或字符串,这可能不会在现实世界中使用,因为我们有分页等技术。

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

如果需要对密钥进行排序,请在集合中尝试ordered dict类

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

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

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

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

for key in sorted(my_dict):
    # output is already sorted by dictionary key
    print key, my_dict[key]
for key in reversed(sorted(my_dict)):
    # output is already sorted descending by dictionary key
    print key, my_dict[key]
如果需要指定特殊的键或方法,可以将其作为信息传递给sorted。以下示例按值排序:

for key, value in sorted(my_dict.items(), key=lambda x: x[1]):
    # output is sorted by value
    print key, value
可以使用
反向
来反向排序顺序:

for key in sorted(my_dict):
    # output is already sorted by dictionary key
    print key, my_dict[key]
for key in reversed(sorted(my_dict)):
    # output is already sorted descending by dictionary key
    print key, my_dict[key]
最后,此代码段将使用已排序的键/值对填充OrderedICT:

from collections import OrderedDict
my_ordered_dict = OrderedDict(sorted(my_dict.items(), key=lambda t: t[0]))
因为你把你的问题从字典更新到了列表 排序列表更容易,只需使用排序的
即可(如果您有不同的排序键,请再次提供一个小方法):


这个问题没有足够的细节来说明你的约束是什么,你试图做什么,以及如何提供一个有说服力的答案。假设我们有很多内存,您可以调用字典上的
sorted
,对其键进行排序。请添加一些详细信息,因为它可以工作,而且速度很快。你还需要更多吗?如果我们有无限的空间,那么我们也必须有无限的时间,这样我们就可以用纸和铅笔来分类键。瞧!请提供更多细节,如您迄今为止尝试的内容/