如何判断一个变量是否是特定类型的字典?即 dict(int, str)

How to tell if a variable is a specific type of dictionary? i.e. dict(int, str)

我有字典 -

d = dict(
    0='a',
    1='b',
    2='c'
)

如何判断 d 是否为 (int, str) 类型的 dict

在 C# 中,它类似于:

d.GetType() == typeof(Dictionary<int, string>)

在单个 Python 字典中,值可以是任意类型。键有额外的要求,它们必须是可哈希的,但它们也可以涵盖多种类型。

要检查字典中的键或值是否属于特定类型,您可以迭代它们。例如:

values_all_str = all(isinstance(x, str) for x in d.values())
keys_all_int = all(isinstance(x, int) for x in d)

Python 词典没有类型。您实际上必须检查每个键值对。例如

all(isinstance(x, basestring) and isinstance(y, int) for x, y in d.items())

如果您使用的是 Python 3.7,您可以执行以下操作:

from typing import Dict

d: Dict[int, str] = { 0: 'a', 1: 'b', 2: 'c' }

print(__annotations__['d'])

然后返回:typing.Dict[int, str]

有一个函数 typings.get_type_hints 将来可能会有用,但目前只知道以下类型的对象:

function, method, module or class

PEP-0526 还说要对此做些什么