如何从元组枚举列表中删除项目

How to remove item from enumerated list of tuples

假设我有两个姓名和出生年份列表,然后我决定压缩它们并枚举它们,如下所示:

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)))

输出:

[(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)

输出

{'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)

输出

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