2024-04-26 04:10:45 发布
网友
在Python3中有没有更好的方法:
point, edges = edges_per_point.popitem() edge = edges[0] if len(edges) > 1: edges_per_point[point] = edges[1:]
我希望从词典中的任何一条边开始,同时也把它从词典中去掉。当列表变空时,我还需要删除它。你知道吗
不确定是否更好,但略有不同:
point, edges = edges_per_point.popitem() if len(edges) > 1: edge = edges_per_point[point].pop(0) else: edge = edges[0]
如果我正确理解了你的问题,并且无耻地处理了Lennart Regebro迭代过程中的删除方式之一。你知道吗
我会这样做:
edge_list = [] delete_these = [] for point, edges in edges_per_point.items(): edge_list.append(edges.pop(0)) if edges: edges_per_point[point] = edges else: delete_these.append(point) for point in delete_these: del edges_per_point[point]
是的,也不是。主要问题是这条线:
point, edges = edges_per_point.popitem()
这将从字典中删除一项并返回它。但是哪一项呢?嗯,你不知道。这完全是武断的。你真的这么想吗?你知道吗
代码只有在循环中才有意义,在循环中您对字典中的所有项执行此操作。然后最好这样做:
for point, edges in edges_per_point.items(): edge = edges.pop(0)
pop(0)将从edges列表中删除第一项,并将其放入edge变量中。你知道吗
所以上面的两行是一个更好的方法来完成你的要求的答案,虽然它不能完全取代你的四行代码,因为这四行没有意义。你知道吗
不确定是否更好,但略有不同:
如果我正确理解了你的问题,并且无耻地处理了Lennart Regebro迭代过程中的删除方式之一。你知道吗
我会这样做:
是的,也不是。主要问题是这条线:
这将从字典中删除一项并返回它。但是哪一项呢?嗯,你不知道。这完全是武断的。你真的这么想吗?你知道吗
代码只有在循环中才有意义,在循环中您对字典中的所有项执行此操作。然后最好这样做:
pop(0)将从edges列表中删除第一项,并将其放入edge变量中。你知道吗
所以上面的两行是一个更好的方法来完成你的要求的答案,虽然它不能完全取代你的四行代码,因为这四行没有意义。你知道吗
相关问题 更多 >
编程相关推荐