Как передать целое число в качестве ключа в 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 Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
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

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