繁体   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