我可以将 Dictionary ItemsView 视为 Iterable[tuple] 吗?

Sha*_*ter 6 python typing pycharm python-3.x python-3.7

我正在尝试处理一个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())))
Run Code Online (Sandbox Code Playgroud)

PyCharm 将此警告附加到data.items()最后一行的短语中:

Expected type 'Iterable[Tuple[str, Any]]', got 'ItemsView[str, Any]' instead
Run Code Online (Sandbox Code Playgroud)

我曾自信地预期dict.items()会返回某种Iterable元组。有没有好的方法向 PyCharm 解释发生了什么?代码实际上有问题吗?