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

时间:2018-11-17 18:41:11

标签: python dictionary types isinstance

我有字典-

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

如何确定d是否为dict类型的(int, str)

在C#中,它将类似于:

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

在单个Python字典中,值可以是任意类型。密钥还有其他要求,即它们必须是可散列的,但它们也可能涵盖多种类型。

要检查字典中的键或值是否为特定类型,可以对其进行迭代。例如:

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

答案 2 :(得分:0)

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

from typing import Dict

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

print(__annotations__['d'])

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

有一个函数PEP-0526,将来可能会有用,但目前仅知道类型为以下的对象:

  

函数,方法,模块或类

{{3}}还说,对此有待解决