如何在python中对列表列表进行排序

时间:2018-11-05 16:35:08

标签: python

考虑列表清单!我想根据内部列表的长度对外部列表进行排序。有人可以告诉我这样做的好方法吗?

这是具体示例:

graph = {'node_1': ['node_2', 'node_4'], 'node_2': ['node_1', 'node_3', 'node_5'], 'node_3': ['node_2', 'node_6'], 
         'node_4': ['node_1', 'node_5'], 'node_5': ['node_4', 'node_2', 'node_6'], 'node_6': ['node_5', 'node_3']}

nodes = ["node_1", "node_2", "node_3", "node_4", "node_5", "node_6"]
connections = [(s,d) for s in nodes for d in nodes if s!=d]

def find_all_paths(graph, start, end, path=[]):
    path = path + [start] #do not append the list, but create a new one!
    if start == end:
        return [path]
    if start not in graph.keys():
        return []
    paths = []
    for node in graph[start]:
        if node not in path:
            newpaths = find_all_paths(graph, node, end, path)
            for newpath in newpaths:
                    paths.append(newpath)
    return paths

example = find_all_paths(graph, 'node_1', 'node_6')
print(example)

此示例返回一个列表,其中包含从网络中的源节点1到目标节点6的所有可能路径。但是,我只想打印两个最短的路径。函数find_all_paths返回列表列表。我想对这个列表进行排序,然后只打印它的前2个条目,应该是2个最短的路径。

3 个答案:

答案 0 :(得分:1)

您可以使用len作为主要功能对列表列表进行排序:

example = sorted(find_all_paths(graph, 'node_1', 'node_6'), key=len)[:2]

答案 1 :(得分:1)

使用key的{​​{1}}关键字参数:

sorted()

或更简单地说:

sorted_list = sorted(original_list, key=lambda x: len(x))

答案 2 :(得分:1)

使用 ICatalogClientFactory _catalogClientFactory = catalogClientFactory; var clientCatalog = _catalogClientFactory.Create(Request.Cookies, Globals.CatalogURL); 对列表列表进行排序。它需要一个可选的sorted参数,我们可以在其中指定需要排序的基础:

key