如何使用类型注解指明一个未知长度的Tuple类型参数是返回Mapping的key?

How do I use type annotations to indicate an unknown-length Tuple type parameter is the key of the returned Mapping?

假设我有这样一个函数:

def a_function(data: Tuple[Tuple[str, ...], ...]) -> Mapping[Tuple[str, ...], int]:
    pass

有没有一种方法可以通过类型注释表明 Tuple[str, ...] 将与通过 data 参数传入的 Tuple[str, ...] 相同?

换句话说,传入的元组将包含同质元组的同质列表,所有元组都可能看起来像 ('fred', 'smith'), ('ananya', 'cooper'),返回的字典看起来像 {('fred', 'smith'): 7, ('ananya', 'cooper'): 13}.

我不知道这是否会让您满意,但您可以这样做:

SomeType = TypeVar('SomeType', Tuple[str, ...])


def a_function(data: Tuple[SomeType, ...]) -> Mapping[SomeType, int]:
    pass