如何从以下数据类型中移除项?
如果我有以下这种数据类型:
[('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'}