Python 获取列表中的数据
假设你有一个这样的列表,里面又包含了很多小列表:
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的回答。