如何判断一个变量是否是特定类型的字典?即 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 还说要对此做些什么
我有字典 -
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 还说要对此做些什么