Как создать новый набор текста. Dict [str, str] и добавить к нему элементы - PullRequest
0 голосов
/ 19 апреля 2019

Здесь уже есть замечательная Q / A для создания нетипизированного словаря в python. Я изо всех сил пытаюсь выяснить, как создать напечатанный словарь, а затем добавить что-то к нему.

Примером того, что я пытаюсь сделать, будет ...

return_value = Dict[str,str]
for item in some_other_list:
  if item.property1 > 9:
    return_value.update(item.name, "d'oh")
return return_value

... но я получаю ошибку descriptor 'update' requires a 'dict' object but received a 'str'

Я пробовал несколько других вариантов вышеупомянутой декларации

return_value:Dict[str,str] = None

ошибки с 'NoneType' object has no attribute 'update'. И пытается

return_value:Dict[str,str] = dict() 

или

return_value:Dict[str,str] = {}

обе ошибки с update expected at most 1 arguments, got 2. Я не знаю, что здесь нужно для создания пустого типизированного словаря, как в c # (var d = new Dictionary<string, string>();). Я бы предпочел не отказываться от безопасности типа, если это возможно. Кто-то может указать, что я пропускаю или делаю неправильно?

Ответы [ 2 ]

3 голосов
/ 19 апреля 2019

Такие вещи, как Dict, не предназначены для использования во время выполнения;это объекты, которые представляют типы, используемые для статического анализа типов.Если вы хотите диктовать, вы должны использовать

return_value = dict()

Вы не можете использовать Dict для создания объекта с ограниченным типом времени выполнения.

1 голос
/ 19 апреля 2019

Последние 2 являются правильным использованием Dict, но вы обновили словарь с неправильным синтаксисом внутри цикла for.

return_value: Dict[str, str] = dict()
for item in some_other_list:
    if item.property1 > 9:
        return_value[item.name] = "d'oh"
return return_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...