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

如何解决Python中list.sort引发的mypy no-any-return类型错误?

修复mypy的no-any-return错误

你的代码触发错误的原因是:未标注具体类型的dict让mypy无法推断x["position"]的明确类型,导致lambda函数的返回值被判定为Any,而list.sort()的key参数要求返回可比较类型(实现了</>运算符的类型),因此触发no-any-return警告。

以下是两种可行的修复方案:

方案一:使用TypedDict定义字典结构(推荐)

通过TypedDict明确字典的字段和对应类型,让mypy能准确推断position的类型:

from typing import TypedDict, List

# 根据实际业务场景,将position的类型替换为int/str等可比较类型
class DataItem(TypedDict):
    position: int

def my_function() -> List[DataItem]:
    data: List[DataItem] = []

    # 填充data的逻辑,确保添加的字典符合DataItem的结构要求

    if condition:
        data.sort(key=lambda x: x["position"])

    return data

方案二:直接标注lambda返回值类型

如果不想定义TypedDict,可以直接给lambda的返回值添加类型提示,明确其具体类型:

from typing import List, Dict

def my_function() -> List[Dict[str, object]]:
    data: List[Dict[str, object]] = []

    # 填充data的逻辑

    if condition:
        # 根据实际类型替换int,比如str
        data.sort(key=lambda x: x["position"] int)

    return data

第一种方案更优,因为它能完整描述字典的结构,既提升代码可读性,也让类型检查更严谨。

内容的提问来源于stack exchange,提问作者Dušan Maďar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 01:15:31