Как определить, является ли переменная определенным типом словаря? то есть dict (int, str) - PullRequest
0 голосов
/ 17 ноября 2018

у меня есть словарь -

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

Как я могу определить, является ли d тип dict (int, str)?

В C # это было бы что-то вроде:

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

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

Словари Python не имеют типов. Вам буквально нужно проверить каждую пару ключ-значение. Э.Г.

all(isinstance(x, basestring) and isinstance(y, int) for x, y in d.items())
0 голосов
/ 19 декабря 2018

если вы используете 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, которая может пригодиться в будущем, но в настоящее время знает только об объектах типа:

функция, метод, модуль или класс

PEP-0526 также говорит, что с этим нужно что-то делать

0 голосов
/ 17 ноября 2018

В одном словаре Python значения могут быть произвольных типов.К ключам предъявляется дополнительное требование, что они должны быть хешируемыми, но они также могут охватывать несколько типов.

Чтобы проверить ключи или значения в словаре определенного типа, вы можете выполнить их итерацию.Например:

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