Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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中)对行进行排序_Python_Sorting - Fatal编程技术网

基于线中间的数据(在Python中)对行进行排序

基于线中间的数据(在Python中)对行进行排序,python,sorting,Python,Sorting,我有一个域列表,我想根据tld对它们进行排序。执行此操作的最快方法是什么?使用键参数.sort()提供一个函数,该函数可以检索要排序的正确数据 import urlparse def get_tld_from_domain(domain) return urlparse.urlparse(domain).netloc.split('.')[-1] list_of_domains.sort(key=get_tld_from_domain) # or if you want to ma

我有一个域列表,我想根据tld对它们进行排序。执行此操作的最快方法是什么?

使用
参数
.sort()
提供一个函数,该函数可以检索要排序的正确数据

import urlparse

def get_tld_from_domain(domain)
    return urlparse.urlparse(domain).netloc.split('.')[-1]

list_of_domains.sort(key=get_tld_from_domain)

# or if you want to make a new list, instead of sorting the old one
sorted_list_of_domains = sorted(list_of_domains, key=get_tld_from_domain)

如果您愿意,您不能单独定义函数,而只是使用
lambda
函数,但是单独定义它通常可以使代码更易于阅读,这总是一个优点。

此外,请记住,从URL获取TLD并不是一件小事。请检查SO上的链接。在python中,您可以使用解析URL。

正如Gangadhar所说,很难确定netloc的哪个部分是tld,但在您的情况下,我会稍微修改Amber的代码。这将对整个域进行排序,首先按最后一级排序,然后按第二级排序,依此类推

这可能足以满足您的需要,而无需参考外部列表

import urlparse

def get_reversed_domain(domain)
    return urlparse.urlparse(domain).netloc.split('.')[::-1]

sorted_list_of_domains = sorted(list_of_domains, key=get_reversed_domain)
只要重新阅读OP,如果列表已经是你可以简单使用的域

sorted_list_of_domains = sorted(list_of_domains, key=lambda x:x.split('.')[::-1])

sorted()。最近我对生成器表达式的使用太多了P