Как передать целое число в качестве ключа в python?

Я написал следующий код, который отлично работает, когда я передаю символ или строку в качестве ключа.

def myfunc(**num):
    for i in num:
        print(i, num[i])

myfunc(a = "One", b = "Two")

Однако, когда я пытаюсь передать целые числа вместо a или b, например:

myfunc(1 = "One", 2 = "Two")

Я получаю следующее сообщение:

SyntaxError: expression cannot contain assignment, perhaps you meant "= = "?

Могу ли я что-нибудь с этим поделать?

Извините, а зачем вам передавать целые числа в качестве имен аргументов? Ты действительно хотел это сделать или пытался вызвать myfunc(a=1, b=2)

Galo do Leste 13.02.2023 00:36

@GalodoLeste Я бы хотел создать такой словарь: {1: «Один», 2: «Два»}

Giorgos 13.02.2023 00:38
Почему в 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
2
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это невозможно, так как все аргументы ключевых слов должны быть строками . С технической точки зрения, как отметил Брайан , аргументы ключевого слова синтаксически должны быть идентификаторами по определению.

Сообщение об ошибке, которое получает ваш пример, загадочно, но вы можете легко продемонстрировать это, передав словарь с целочисленными ключами в качестве аргументов ключевого слова:

def myfunc(**num):
    for i in num:
        print(i, num[i])


myfunc(**{1: 'one', 2: 'two'})
# TypeError: keywords must be strings

Если вы должны использовать целые ключи, просто передайте словарь в качестве аргумента и избегайте всех проблем:

def myfunc(num):
    for i in num:
        print(i, num[i])


myfunc({1: 'one', 2: 'two'})

@DanielHao Мне нравится использовать почтовый архив python-dev. Это конкретное я сохранил в своем списке для чтения некоторое время назад (я обычно делаю это, когда натыкаюсь на что-то, что может быть полезно позже).

Michael M. 13.02.2023 00:58

Я думаю, что будет ясно/правильнее сказать, что аргументы ключевого слова синтаксически должны быть идентификаторами. То есть, в конце концов, именно так они определены.

Brian 13.02.2023 01:02

@ Брайан Хороший звонок, я отредактировал свой ответ. Просто для простоты / ради новичка я оставил в оригинале, но добавил ваше примечание рядом с ним.

Michael M. 13.02.2023 01:07
def print_value(my_dict, key):
    print(my_dict[key])

# Define a dictionary
my_dict = {1: 'one', 2: 'two', 3: 'three'}

# Pass an integer key to the function
print_value(my_dict, 2)  # Output: two

это то, что вы после?

Это далеко не похоже на код OP и не отвечает на вопрос.

Michael M. 13.02.2023 00:47

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