我有这样的结构:
['a;1,2,3\n', 'b;abc\n', ...]
换句话说:它是List
,其中包含以下内容:'id;element1,element2,...\n'
现在我想检查List是否包含id = "b"
的元素,如果它包含项"b"
我想要返回整个元素:
'b;abc\n'
如何使用python执行此操作?是否可以使用in
语句来执行此操作?
答案 0 :(得分:2)
>>> L = ['a;1,2,3\n', 'b;abc\n']
>>> next((x for x in L if x.partition(';')[0] == 'b'), 'No match')
'b;abc\n'
答案 1 :(得分:2)
这将返回一个符合您条件的所有项目的列表,我假设它可能有多个结果匹配,如果只有1个结果,结果列表将有1个项目。
>>> input = ['a;1,2,3\n', 'b;abc\n']
>>> filter(lambda item:item.find('b;') == 0 ,input)
['b;abc\n']
答案 2 :(得分:1)
您可以使用以下函数从结构中提取所有匹配元素的列表:
def query(data, key):
return [ x for x in data if x.startswith(key + ';') ]
使用示例:
data = [
'a;1,2,3\n',
'b;abc\n',
'c;4,5,6\n'
]
print query(data, 'b')
这给出了列表['b;abc\n']
。如果您要求输入不存在的密钥,则结果为空列表。
答案 3 :(得分:0)
其他方式很可能更快。
>>> L = ['a;1,2,3\n', 'b;abc\n']
>>> temp = [i.split(';') for i in L]
>>> ';'.join([x for x in temp if x[0] == 'b'][0])
'b;abc\n'