発生している問題・エラーメッセージ
型アノテーションをつけて、mypyを実行しているのですが、その際のcollections.Counterの扱いがよくわかりません。
Counter型はcount[dict[str,int]]を返すと思うのですが、以下のようなアノテーションをつけてmypyを通そうとすると、エラーになってしまいます。
python
1def elements_counter(elements: List[List[str]]) -> List[Counter[Dict[str, int]]]: 2 return list(map(lambda x: collections.Counter(x), elements)) 3
これでmypyを通そうとしたところ以下のようなエラーとなりました。
hogehoge/elements_counter.py:12: error: Argument 1 to "Counter" has incompatible type "List[str]"; expected "Iterable[Dict[str, int]]"
しかし、以下のように書くとmypyが通ります。
def elements_counter(elements: List[List[str]]) -> List[Counter[str]]: return list(map(lambda x: collections.Counter(x), elements))
なぜ、戻り値をList[Counter[Dict[str, int]]]と記載した時にはエラーになってしまうのでしょうか。
補足情報(FW/ツールのバージョンなど)
python 3.7.2を使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。