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

如何在Python类型提示中指定dict_values类型?

如何在Python类型提示中指定dict_values类型?

这个问题我之前也踩过坑!直接写dict_values会触发NameError,是因为这个具体类型的名称并没有直接暴露在全局命名空间里。正确的做法是使用标准库提供的抽象基类来做类型提示:

步骤1:导入对应的类型

根据你的Python版本选择导入方式:

  • Python 3.9及以上版本:直接从collections.abc导入ValuesView
    from collections.abc import ValuesView
    
  • Python 3.8及更早版本:从typing模块导入ValuesView
    from typing import ValuesView
    

步骤2:在函数中使用类型提示

你可以给ValuesView指定内部值的具体类型(比如你的例子里值是int类型),这样类型检查工具(如mypy)能提供更精准的提示:

def f(x: ValuesView[int]) -> None:
    print([y for y in x])

f({'a': 0, 'b': 1}.values())  # 正常打印 [0, 1],类型提示完全生效

为什么这样可行?

dict.values()返回的dict_values对象,本质上是collections.abc.ValuesView的一个具体子类。使用抽象基类做类型提示,既准确对应了对象的实际类型,也符合Python类型提示的最佳实践——我们更关注对象的接口能力(比如是否可迭代),而非具体的实现类。

如果不需要这么精确的类型,也可以用更通用的Iterable[int]来做提示,但如果想明确标注这是字典的值视图类型,ValuesView是最恰当的选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:57:12