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

如何编写单一Python函数遍历键为单元素/多元素元组的两类字典

问题根因

你遇到的报错和遍历逻辑无关,for key, values in h.items()本身可以兼容任意类型的字典键,报错是%字符串格式化的语法特性导致的:当%右侧的参数是元组时,Python会自动把元组的每个元素拆成独立的格式化参数,你的字符串里只有1个%s占位符,当键是长度大于1的元组时就会出现参数不匹配的错误。

解决方案

版本1:通用兼容版

直接使用f-string(或显式调用str()转换键),自动适配所有类型的键,输出键的原生表示:

def print_hash(h, desc):
    "display a hash's keys and each key's values"
    print(f'----- start: {desc}')
    for key, values in h.items():
        print(f'key: {key}')
        for v in values:
            print(f'\t{v}')
    print(f'----- end: {desc}')

打印d1时输出格式为key: a,打印d2时输出格式为key: ('a', 100),全程无报错。

版本2:适配自定义格式版

如果需要和你手写的d2打印效果一致(元组键用/分隔元素),可以增加类型判断逻辑:

def print_hash(h, desc):
    "display a hash's keys and each key's values"
    print(f'----- start: {desc}')
    for key, values in h.items():
        if isinstance(key, tuple):
            key_str = ' / '.join(map(str, key))
        else:
            key_str = str(key)
        print(f'key: {key_str}')
        for v in values:
            print(f'\t{v}')
    print(f'----- end: {desc}')

打印d2时输出格式为key: a / 100,和你手动遍历d2的效果完全一致,同时兼容d1的打印需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:54:06