有一个列表清单:
data = [['a','x'], ['b','q'], ['c','z']]
search = 'c'
any(e[0] == search for e in data)
这会返回布尔值但是如果我想要检索第一个出现的另一对seach变量(换句话说我想在搜索'a'时检索'x')该怎么办?
答案 0 :(得分:5)
您可以使用dict(data)['c']
获取该对中的第二个值。
dict(data)
从你的对中创建一个字典。请注意,这将返回单个结果,并且不保证返回第一个匹配。但是如果你执行了很多搜索而且你知道你没有重复,那么使用字典会更快。
否则,请使用zeekay的答案。
答案 1 :(得分:2)
您可以使用list comprehension代替:
>>> search = 'a'
>>> [item[1] for item in data if item[0] == search]
<<< ['x']
表达式的右侧部分过滤结果,以便只返回第一个元素等于搜索值的项目。
答案 2 :(得分:2)
如果您只需要第一次出现,则不要使用列表推导创建中间列表,因为这将搜索整个列表。
相反,请将next()
与生成器表达式一起使用,该表达式会在找到匹配项后立即返回:
>>> next(snd for fst, snd in data if fst == 'a')
'x'
答案 3 :(得分:0)
>>> data = [['a','x'], ['b','q'], ['c','z']]
>>> search = 'c'
>>> print [e[1] for e in data if e[0] == search]
['z']
但是,你真的想要一本字典:
>>> datadict = {'a':'x', 'b':'q', 'c':'z'}
>>> search = 'c'
>>> print datadict[search]
z
答案 4 :(得分:0)
data = [['a','x'], ['b','q'], ['c','z']]
search = 'c'
for inner_list in data:
if search in inner_list:
print(inner_list[1])