Могу ли я рассматривать словарь ItemsView как Iterable [кортеж]? - PullRequest
1 голос
/ 24 апреля 2020

Я пытаюсь обработать объект dict, и PyCharm выдает мне неожиданное предупреждение о типе.

Вот сокращенный пример, который воспроизводит предупреждение:

    X = type("X", (), {})
    def big_foo(data: Dict[str, Any]) -> Dict[str, Any]:
        def little_foo(entries: Iterable[Tuple[str, Any]]) -> Iterable[Tuple[X, Any]]:
            pass
        def little_bar(entry: Tuple[X, Any]) -> Tuple[str, Any]:
            pass
        return dict(map(little_bar, little_foo(data.items())))

PyCharm прикрепляет это предупреждение к фразе data.items() в последней строке:

Expected type 'Iterable[Tuple[str, Any]]', got 'ItemsView[str, Any]' instead

I с уверенностью ожидал, что dict.items () вернет какой-нибудь Iterable из Tuples. Есть ли хороший способ объяснить PyCharm, что происходит? Есть ли проблема с кодом?

...