列表检索数据的Python列表

时间:2011-08-07 20:28:14

标签: python list

有一个列表清单:

data = [['a','x'], ['b','q'], ['c','z']]
search = 'c'
any(e[0] == search for e in data)

这会返回布尔值但是如果我想要检索第一个出现的另一对seach变量(换句话说我想在搜索'a'时检索'x')该怎么办?

5 个答案:

答案 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])