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

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