簡體   English   中英

從列表字典中刪除項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM