Python:将一个字典作为参数传递(sl4a)

时间:2015-05-10 12:05:01

标签: python dictionary 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中的参数以传递字典之前,所有工作都运行正常(我只是传递了其中的一个值'直到我意识到我需要整个事情才能实现一个功能i'我要补充)

1 个答案:

答案 0 :(得分:0)

如果您正在讨论将Dictionary作为参数传递,它应该像传递任何其他参数类型一样简单,并且在您的调用函数中使用此字典与使用常规字典一样正常:

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#keyword-arguments