簡體   English   中英

如何從枚舉的元組列表中刪除項目

[英]How to remove item from enumerated list of tuples

假設我有兩個姓名和出生年份列表,然后我決定 zip 他們枚舉它們,如下所示:

names = ['Boris', 'Billy', 'Tod']
dates = ['1990', '1992', '1994']

pairs = list(zip(names,dates))
pairs_num = list(enumerate(pairs,start=1))

如果此時我需要刪除pairs_num中的一項,只知道名稱,例如'Boris'。 我該怎么辦?

這是使用filter的一種方法。

前任:

names = ['Boris', 'Billy', 'Tod']
dates = ['1990', '1992', '1994']

pairs = list(zip(names,dates))
pairs_num = list(enumerate(pairs,start=1))
print(list(filter(lambda x: x[1][0] != 'Boris', pairs_num)))

Output:

[(2, ('Billy', '1992')), (3, ('Tod', '1994'))]

但是如果你有一個dict而不是list會更好。 這樣,您可以使用名稱作為鍵來刪除該項目。

您可以使用字典來存儲對,這樣更容易刪除字典中的任何對。

代碼

names = ['Boris', 'Billy', 'Tod']
dates = ['1990', '1992', '1994']

pairs = dict((name, date) for name, date in zip(names, dates))
del pairs["Boris"]
print(pairs)

output

{'Billy': '1992', 'Tod': '1994'}

您可以遍歷list(enumerate(pairs,start=1))並檢查第一個索引中的第二個項目是否等於Boris ,如果是則不包含該項目。

names = ['Boris', 'Billy', 'Tod']
dates = ['1990', '1992', '1994']

pairs = list(zip(names,dates))
pairs_num = [i for i in list(enumerate(pairs,start=1)) if i[1][0] != 'Boris']
print(pairs_num)

Output

[(2, ('Billy', '1992')), (3, ('Tod', '1994'))]

暫無
暫無

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

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