簡體   English   中英

將元組壓縮成集合-python

[英]zip sets of tuples into set - python

如果我有:

A = {(a,b),(c,d)}
B = {(b,c),(d,e),(x,y)}

當其他元素相同時,我希望使用A中的第一個元素和B中的第二個元素創建一個新集合:

C = {(a,c),(c,e)}

我試過了:

return {(a,c) for (a,b) in A for (b,c) in B} # nested loop creates too many results

#return {zip(a,c)} in a for (a,b) in A and c for (b,c) in B
#return {(a,c) for (a,c) in zip(A(a,b), B(b,c))}
#return {(a,c) for (a,b) in A for (b,c) in B}

這些只是行不通,我不確定我是否完全了解zip()函數。

編輯:示例案例有誤並添加了條件,我需要這樣的內容:

return {(a,d) for (a,b) in A for (c,d) in B} # but ONLY when b == c

最后一次嘗試

 {(a,d) for (a,b) in A for (c,d) in B} # but ONLY when b == c 

你幾乎明白了。 您只需要將條件從注釋移到設置的理解中即可:

>>> {(a,d) for (a,b) in A for (c,d) in B if b == c}
{('c', 'e'), ('a', 'c')}

當然,順序是隨機的,因為集合是無序的。

>>> {('c', 'e'), ('a', 'c')} == {('a','c'),('c','e')}
True
>>> {('a','c'),('c','e')}
{('c', 'e'), ('a', 'c')}

暫無
暫無

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

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