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

Python中如何向自定义字典函数传递多个键参数?

解决Python函数传递多个键打印字典对应成绩的问题

问题场景

有一个存储各科成绩的字典,需要通过自定义函数mymarks()传递多个科目键,只打印指定科目的成绩。原代码和错误尝试如下:

原错误代码:

def mymarks(dict, keys):
    for key in dict:
        print(dict[keys])

marks = {"maths": "85", "chemistry": "70", "english": "76", "biology": '83', "physics": "71"}

mymarks(marks, "chemistry", "biology", "physics")

错误的参数定义尝试:

def mymarks(dict, keys, keys, keys):
    for key in dict:
        print(dict[keys])

mymarks(marks, keys = "chemistry", keys = "biology", keys = "physics")

预期输出:

70
83
71

错误原因

  1. 参数命名重复:Python不允许函数定义重复的参数名,keys, keys, keys这种写法直接违反语法规则,会触发语法错误。
  2. 循环逻辑错误:原函数里for key in dict是遍历字典的所有键,但每次打印的是固定的dict[keys],逻辑完全不符合“打印指定键对应值”的需求。

正确实现方式

方式1:用可变参数*args接收多个键

这种写法允许调用函数时直接传入任意数量的科目键:

def mymarks(score_dict, *keys):
    for key in keys:
        # 用get()避免键不存在时抛出异常
        print(score_dict.get(key, "科目不存在"))

marks = {"maths": "85", "chemistry": "70", "english": "76", "biology": '83', "physics": "71"}

mymarks(marks, "chemistry", "biology", "physics")

这里的*keys会把调用时传入的多个位置参数打包成元组,循环遍历每个键并打印对应成绩。

方式2:接收键的列表/元组作为参数

如果习惯传递集合类型参数,可以用这种写法:

def mymarks(score_dict, keys):
    for key in keys:
        print(score_dict.get(key, "科目不存在"))

marks = {"maths": "85", "chemistry": "70", "english": "76", "biology": '83', "physics": "71"}

mymarks(marks, ["chemistry", "biology", "physics"])

调用时需把要查询的键放在列表或元组中传入函数,循环逻辑和第一种一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:55:20