[英]Removing item from dictionary of lists
在python 3中是否有更好的方法可以做到這一點:
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)將從邊緣列表中刪除第一項,並將其放入edge變量中。
因此,以上兩行是做您想要的事情的更好方法的答案,盡管它不能完全替代您的四行代碼,但是由於這四行沒有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.