簡體   English   中英

如果存在於另一個元組中,如何從元組列表中刪除元組

[英]How to Remove tuples from list of tuples if exists in another one

A =[(('6X', 1),), (('6E', 4),), (('10X', 2),)]
B=['6E', '10X']

我想保留 A 中唯一具有 B 中存在的第一個元素的元素

a =[ (('6E', 4),), (('10X', 2),)]

代碼:

a=[] 
for r in range(0, len(A)):
  # print(A[r][0][0])
  for k in range(0, len(B)): 
    if A[r][0][0]==B[k]: 
       a=A[r][0] 
       a.append(a)
print( a)

如果您的示例數據涵蓋了所有元組嵌入的可能性,那么一個簡單的列表推導就可以解決問題:

a = [ ta for ta in A if ta[0][0] in B ]

[(('6E', 4),), (('10X', 2),)]

但是,如果您有更深/可變的嵌套級別,您可能需要 function 來獲得第一個值:

def firstValue(T): return firstValue(T[0]) if isinstance(T,tuple) else T

a = [ ta for ta in A if firstValue(ta) in B ]

使用filter功能 您傳遞了一個 lambda 表達式,它為列表中的每個值解析為真/假。 解析為True的值將傳遞到 output 列表。

a = list(filter(lambda x: x[0][0] in B, A))
print(a)

# Output
# [(('6E', 4),), (('10X', 2),)]

暫無
暫無

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

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