考虑列表清单!我想根据内部列表的长度对外部列表进行排序。有人可以告诉我这样做的好方法吗?
这是具体示例:
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个最短的路径。
答案 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