簡體   English   中英

基於公共值合並表示圖邊的元組列表

[英]Merge list of tuples representing graph edges based off common values

我正在嘗試編寫一些 python 代碼,如果給定一個表示圖形上有向邊的元組列表,我將返回所有可能的路徑。 在這種情況下,圖將不包含循環,並且圖中的每個節點只能連接到另一個節點。 輸入將采用以下形式

[(1909, 1910), (1910, 1900), (1922, 1920), (1935,1922), (1940, 1939)]

並且應該以以下形式返回一些東西

[(1909,1910,1900), (1935,1922,1920), (1940,1939)]

我不知道如何解決這個問題,因為必須保持順序,即因為 1922 年在 1920 年之前,1935 年在 1922 年之前,結果答案必須是 (1935,1922,1920)

關於如何實現這一目標的任何想法?

您可以將元組轉換為以第一個項目為鍵的字典,然后通過鏈接每個項目的最后一個元素來逐步合並項目。

tuples = [(1909, 1910), (1910, 1900), (1922, 1920), (1935,1922), (1940, 1939)]

links = { a:[b] for a,b in tuples }
while True:
    toMerge = [(a,bs[-1]) for a,bs in links.items() if bs[-1] in links]
    for a,b in toMerge:
        links[a].append(b)
        del links[b]
    else: break
result = [ [a,*bs] for a,bs in links.items() ]
print(result)

# [[1909, 1910, 1910], [1935, 1922, 1922], [1940, 1939]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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