You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CSV处理:已知X、Y列取值如何查询对应Z列的单元格值

实现方案

方法1:单次查询直接遍历(适合查询次数少的场景)

直接遍历嵌套列表的每一行数据,匹配X、Y列的取值,匹配成功直接返回对应Z列值。
假设你的嵌套列表结构为:第一行为表头,后续行是数据,示例代码如下:

# 示例嵌套列表数据
csv_data = [
    ['X;', 'Y;', 'Z'],
    ['A;', '1;', 'syfgusj'],
    ['A;', '2;', 'adaddsfd'],
    ['B;', '1;', 'adsghfjgftrds'],
    ['B;', '2m;', 'adergtw'],
    ['C;', '1;', 'adergtw'],
    ['C;', '2;', 'addfgftre']
]

def query_z(x_val, y_val, data):
    # 跳过表头,从第二行开始遍历
    for row in data[1:]:
        # 行的第0位是X列,第1位是Y列,第2位是Z列
        if row[0] == x_val and row[1] == y_val:
            return row[2]
    # 没有匹配结果返回None
    return None

# 测试查询:X为B;,Y为2m;
print(query_z('B;', '2m;', csv_data)) # 输出:adergtw

注意:如果你的数据已经提前去掉了字段末尾的分号,匹配的时候对应去掉查询值的分号即可。另外Y列取值为字符串类型,匹配时不需要做类型转换,直接比对字符串内容即可,避免类型不匹配导致查询失败。

方法2:预建索引映射(适合多次查询的场景)

如果需要频繁查询,先把所有X、Y组合和对应Z值存成字典,后续查询时间复杂度为O(1),效率更高。示例代码如下:

# 预构建索引
def build_index(data):
    index = {}
    for row in data[1:]:
        key = (row[0], row[1])
        index[key] = row[2]
    return index

# 构建索引
csv_index = build_index(csv_data)

# 直接查询
print(csv_index.get(('C;', '2;'))) # 输出:addfgftre

如果存在X、Y组合重复的情况,上面的代码会保留最后一行的Z值,如果你需要保留所有匹配结果,可以把字典的值改成列表,每次匹配就追加值即可。

内容的提问来源于stack exchange,提问作者Nothing Happen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:39:04