如何为 itertools groupby 指定类型?
How to specify types for itertools groupby?
我有一个要操作的字符串列表。 return 类型类似于组类型,由 int 作为键和字符串列表作为值组成。
我尝试了什么?
from typing import List, Dict, Iterator
from itertools import groupby
def group_names(names: List[str]) -> Dict[int, list]:
group_iter: Iterator[int, Iterator[list]] = groupby(sorted(names,key=len), lambda x: len(x)) # -> Having an issue here
return {k: list(v) for k, v in group_iter}
它工作正常我将它键入为由任何类型组成的迭代器。
group_iter: Iterator[Any] = groupby(sorted(names,key=len), lambda x: len(x))
但是我想为组密钥和项目指定类型?
参考 我注意到分组依据的 return 类型是:
Iteratable[Tuple[<key_type>, Iterable[<item_type>]]]
所以,在我的例子中,类型是:
group_iter: Iterator[Tuple[int, Iterable[str]]] = groupby(sorted(names,key=len), lambda x: len(x))
我有一个要操作的字符串列表。 return 类型类似于组类型,由 int 作为键和字符串列表作为值组成。
我尝试了什么?
from typing import List, Dict, Iterator
from itertools import groupby
def group_names(names: List[str]) -> Dict[int, list]:
group_iter: Iterator[int, Iterator[list]] = groupby(sorted(names,key=len), lambda x: len(x)) # -> Having an issue here
return {k: list(v) for k, v in group_iter}
它工作正常我将它键入为由任何类型组成的迭代器。
group_iter: Iterator[Any] = groupby(sorted(names,key=len), lambda x: len(x))
但是我想为组密钥和项目指定类型?
参考
Iteratable[Tuple[<key_type>, Iterable[<item_type>]]]
所以,在我的例子中,类型是:
group_iter: Iterator[Tuple[int, Iterable[str]]] = groupby(sorted(names,key=len), lambda x: len(x))