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

如何从Python字典提取指定键的值并批量传入函数调用

解决方案:遍历字典指定键的同索引元素并传入函数

先修正一个常见坑:不要用dict当变量名

dict是Python内置类型,用它做变量名会覆盖内置功能,导致后续操作出错。先把你的字典变量名改成my_dict:

my_dict = {'key1': ['a', 'b', 'c'], 'key2': ['d', 'e', 'f'], 'key3': ['g', 'h', 'i']}

# 示例函数(替换成你的实际函数)
def my_function(variable1, variable2):
    return f"{variable1}_{variable2}"

方法1:用zip高效配对同索引元素(推荐)

zip会自动把两个列表的同索引元素一一打包,适合大列表场景(800+元素无压力):

results = []
# 遍历key1和key3的配对元素
for v1, v3 in zip(my_dict['key1'], my_dict['key3']):
    res = my_function(v1, v3)
    results.append(res)

# 输出结果:['a_g', 'b_h', 'c_i']
print(results)

方法2:用Pandas的正确实现(如果你习惯用DataFrame)

之前转DataFrame没解决问题,大概率是没按行处理或参数传递错误:

import pandas as pd

df = pd.DataFrame(my_dict)
# 按行调用函数,axis=1表示逐行处理
results = df.apply(lambda row: my_function(row['key1'], row['key3']), axis=1).tolist()

# 输出同样结果:['a_g', 'b_h', 'c_i']
print(results)

如果数据量极大,apply效率不够,可改用更高效的itertuples:

results = []
# itertuples返回行的元组,index=False跳过索引列
for row in df.itertuples(index=False):
    res = my_function(row.key1, row.key3)
    results.append(res)

你之前出错的可能原因

  1. 用了dict当变量名,覆盖了Python内置字典类型,导致后续操作抛出异常
  2. for循环时没正确配对同索引元素,比如错误遍历单个列表后手动取索引(容易越界)
  3. Pandas操作时没指定axis=1,默认按列处理导致参数不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:22:50