Python 获取列表中的数据

3 投票
5 回答
2309 浏览
提问于 2025-04-16 23:05

假设你有一个这样的列表,里面又包含了很多小列表:

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

这个操作会返回一个真假值,但如果我想要找到第一个出现的其他配对,比如说我想在搜索'a'的时候得到'x',该怎么做呢?

5 个回答

2

如果你只需要找到第一个符合条件的结果,那就不要用列表推导式去创建一个中间列表,因为这样会把整个列表都搜索一遍。

相反,可以使用next()配合生成器表达式,这样一找到匹配的结果就会立刻返回:

>>> next(snd for fst, snd in data if fst == 'a')
'x'
2

你可以用一种叫做列表推导式的方法来实现:

>>> search = 'a'
>>> [item[1] for item in data if item[0] == search]
<<< ['x']

表达式右边的部分会筛选结果,只返回那些第一个元素等于你要查找的值的项目。

6

你可以用 dict(data)['c'] 来获取这个配对中的第二个值。

dict(data) 会把你的配对转换成一个字典。需要注意的是,这样做只会返回一个结果,而且不一定是第一个匹配的结果。不过,如果你进行很多次搜索,并且知道没有重复的情况,使用字典会更快。

否则,可以参考zeekay的回答。

撰写回答