如何从以下数据类型中移除项?

1 投票
4 回答
1459 浏览
提问于 2025-04-17 04:32

如果我有以下这种数据类型:

[('a', 'digital-text'), ('b', 'bbbbbbb'), ('c', '1318913293'), ('d', '1-3')]

我该如何删除项目 b,让输出变成这样:

[('a', 'digital-text'), ('c', '1318913293'), ('d', '1-3')]

我还想在删除之前检查一下 b 是否存在。 我试过 if 'b' in xxxx,但这样找不到它。

我刚开始学Python。

4 个回答

0

列表推导式可以很好地完成这个任务:

new_list = [element for element in old_list if element[0] != "b"]
0

试着使用“filter”这个功能:

newList = filter(lambda (k, v): k != 'b', oldList)

在Python 2中,它会返回一个过滤后的列表,而在Python 3.x中,它会返回一个迭代器。

7

你可以用这种方式来创建一个列表:

something = [(key, value) for key, value in something if key != 'b']

不过,看起来你是想自己重新发明一个字典,可能是出于某种原因。如果不需要保持顺序,那就直接用字典吧:

something = {
    'a': 'digital-text',
    'b': 'bbbbbbb',
    'c': '1318913293',
    'd': '1-3',
}
del something['b']

如果需要保持顺序,可以使用 collections.OrderedDict,而不是 dict

from collections import OrderedDict
something = OrderedDict([
    ('a', 'digital-text'),
    ('b', 'bbbbbbb'),
    ('c', '1318913293'),
    ('d', '1-3')
])
del something['b']

用字典的话,如果你想把它变回你问题里提到的格式,只需在字典上调用 items() 方法就可以了。

>>> # assuming something is an OrderedDict and you've already deleted the item
>>> # if it was a plain dict, it might be in a different order
>>> # if you haven't deleted the item, it would still be there
>>> something.items()
[('a', 'digital-text'), ('c', '1318913293'), ('d', '1-3')]

另外,要把像你问题中提到的列表 转换成 某种字典,只需把它传入字典中:

>>> dict([
...     ('a', 'digital-text'),
...     ('b', 'bbbbbbb'),
...     ('c', '1318913293'),
...     ('d', '1-3')
... ])
{'a': 'digital-text', 'b': 'bbbbbbb', 'c': '1318913293', 'd': '1-3'}

撰写回答