Python中如何从转换后的列表匹配字符串并获取对应关联值?
解决方案
首先你当前的代码里,if 'random word2' in values:这个判断逻辑是错误的,因为values里的元素是子列表(比如['random word1', 20]),不是单个字符串,所以这个条件永远不会成立。下面给你两种可靠的实现方式:
方式一:转成字典(推荐)
字典天生就是用来处理键值关联的结构,把原列表直接转成字典会让后续操作更简洁:
# 原数据 values = ['random word1', 20, 'random word2', 54] # 直接转成字典(比转嵌套列表更实用) values_dict = dict(zip(values[::2], values[1::2])) # 判断并取值 target = 'random word2' if target in values_dict: print(values_dict[target]) # 输出54
方式二:遍历嵌套列表查找
如果一定要保留嵌套列表的结构,可以遍历每个子列表进行匹配:
values = ['random word1', 20, 'random word2', 54] values = list(map(list, zip(values[::2], values[1::2]))) target = 'random word2' result = None for item in values: if item[0] == target: result = item[1] break if result is not None: print(result) # 输出54
说明
- 方式一的字典操作效率更高,时间复杂度是O(1),适合数据量较大的场景;
- 方式二的遍历查找时间复杂度是O(n),如果数据量小也可以用,但字典是更贴合需求的选择。
内容的提问来源于stack exchange,提问作者ETHERC20
相关产品推荐
相关产品推荐

