Python: передача словаря в качестве параметра (sl4a)
Я изучаю Python, работаю с sl4a, чтобы сделать приложение для телефона. У меня проблемы со словарем при передаче его в качестве параметра. Я искал, чтобы увидеть, если кто-то уже имел эту проблему и нашел несколько похожих вопросов, но не смог понять мою ошибку.
Вот код (я удалил все ненужные части):
def choiceForm(screenTitle, choices, posMessage, neutMessage,
negMessage, questType, screen):
qType = questType[screen]
print(qType) #Not giving what it should
# More code
def reservForm():
questionType = {0 : 'single', 1 : 'date', 2 : 'input', 3 : 'input',
4 : 'multi', 5 : 'single'}
reservChoice, screenID, success = choiceForm(titlePack[screenID],
choicePack[screenID], 'Suivant', 'Précédent', 'Quitter',
questionType, screenID)
# More code
При выполнении я получаю "s" для qtype, который не должен быть там. Я хочу получить доступ к своему словарю в вызываемой функции, чтобы иметь возможность получить значение, учитывая индекс (screenID). Я прочитал учебник, рассказывающий о распаковке вещи с ** оператором, но я ничего не понял. Все работало нормально, прежде чем я изменил свой параметр в choiceForm для передачи словаря (я просто передавал одно из его значений, пока не понял, что мне понадобится все это для функции, которую я должен добавить)
1 ответ
Если вы говорите о передаче словаря в качестве параметра, это должно быть так же просто, как и передача любого другого типа параметров, и использование этого словаря внутри вызывающей функции так же, как если бы вы работали с обычным словарем:
dic.keys(), dic.values(), dic.items(), dic[key]=value...etc
Теперь, если вы говорите об этой записи: "**", это означает передачу параметров в виде словаря, пример из документа Python должен прояснить это:
def cheeseshop(kind, *arguments, **keywords):
print "-- Do you have any", kind, "?"
print "-- I'm sorry, we're all out of", kind
for arg in arguments:
print arg
print "-" * 40
keys = sorted(keywords.keys())
for kw in keys:
print kw, ":", keywords[kw]
Вызов этой функции:
cheeseshop("Limburger", "It's very runny, sir.",
"It's really very, VERY runny, sir.",
shopkeeper='Michael Palin',
client="John Cleese",
sketch="Cheese Shop Sketch")
Я предлагаю вам прочитать об этом по адресу: https://docs.python.org/2.7/tutorial/controlflow.html