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
错误原因
- 参数命名重复:Python不允许函数定义重复的参数名,
keys, keys, keys这种写法直接违反语法规则,会触发语法错误。 - 循环逻辑错误:原函数里
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
相关产品推荐
相关产品推荐

