Как передать строку с пробелом в качестве аргумента ключевого слова?

Я пытаюсь реализовать функцию, которая получает значения и устанавливает эти значения в новые значения словаря.

data = {} 
def setValue(**kwargs):
    for key, value in kwargs.items():
        data[key] = value

Эта функция хорошо работает для строк без пробелов.

setValue(Hello = 3)
# {'Hello': 3}

Но когда я попытался установить значение ключевой строки с пробелом, например «Hello World», возникла SyntaxError.

setValue(Hello World = 3) # SyntaxError: invalid syntax
setValue("Hello World" = 3) # SyntaxError: keyword can't be an expression

Как передать строку с пробелами в качестве аргумента ключевого слова?

Будет ли вместо этого использование Hello_World приемлемой реализацией?

Reedinationer 08.04.2019 22:37
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
521
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете передать dict аргументов ключевого слова.

k = {'Hello World': 3}
setValue(**k)
Ответ принят как подходящий

How to pass a string having whitespace characters as a keyword argument?

Это невозможно, поскольку переменные (и, следовательно, аргументы ключевых слов) не могут иметь пробелов в Python.

Источник: https://docs.python.org/3/reference/lexical_analysis.html#идентификаторы

 

Вы можете использовать символы подчеркивания:

setValue(Hello_World=3)

Или передайте kwargs как дикт:

setValue(**{'Hello World': 3})

Другие вопросы по теме