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

Python中如何声明键为str、值为多指定类型的固定结构字典类型注解

固定结构字典的类型声明方案

你需要的严格键值匹配、无Union的字典类型标注,直接用标准库的TypedDict实现即可。普通的Dict类型仅支持统一标注所有键、所有值的类型,不支持单键单独指定值类型,这也是你写的多参数Dict写法不符合语法规范的原因。

具体实现方式

  • 导入依赖
    Python 3.8及以上版本可以直接从标准库typing导入,低于3.8版本需要安装typing_extensions兼容包后导入:
# Python 3.8+ 用这个导入语句
from typing import TypedDict, List

# Python 3.7及以下用这个导入语句
# from typing_extensions import TypedDict, List
  • 定义固定字典结构
    按照你实际的键名、对应值类型声明TypedDict子类即可,类型检查器会严格校验结构,不允许缺键、多键、值类型不匹配:
# 以下三个类型替换成你实际的业务类型即可
class ObjectType1:
    pass
class ObjectType2:
    pass
class ObjectType3:
    pass

class FixedStructDict(TypedDict):
    # 把下面三个键名替换成你实际使用的字符串键名
    first_key: ObjectType1
    second_key: ObjectType2
    third_key: List[ObjectType3]
  • 给生成方法加类型标注
    直接把你实现的字典生成方法的返回类型标注为上面定义的FixedStructDict即可,示例:
def generate_my_dict() -> FixedStructDict:
    return {
        "first_key": ObjectType1(),
        "second_key": ObjectType2(),
        "third_key": [ObjectType3(), ObjectType3()]
    }

校验效果

使用mypy、pyright等类型检查工具校验时,会严格执行以下规则,完全满足你的要求:

  • 返回的字典必须包含定义的全部三个键,不能缺失也不能额外增加未定义的键
  • 每个键对应的值必须严格匹配声明的类型,不会用Union放宽类型约束
  • 所有键均为字符串类型,符合你的基础要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:51:25