【问题标题】:Python : passing a dictionnary as a parameter (sl4a)Python:将字典作为参数传递(sl4a)
【发布时间】:2015-05-10 12:05:00
【问题描述】:

我正在学习 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

在执行时,我得到了 qtype 的“s”,这不是应该存在的。在给定索引(screenID)的情况下,我想在被调用函数中访问我的字典以获取值。我读了一个教程,讲述了用 ** 运算符解包的内容,但我什么都不懂。在我更改choiceForm 中的参数以传递字典之前,一切正常(我只是传递其中一个值,直到我意识到我需要整个东西才能添加一个功能)

【问题讨论】:

  • 好吧,我正在使用 android 脚本层 (sl4a)。这在我的手机上运行,​​它是android。其余代码显示它,我应该发布它吗?
  • choiceForm 返回什么?
  • 这个:返回选择,屏幕,成功
  • 发布任何必要的代码以帮助人们解决您的问题。如果其余代码不是,请不要。
  • 得到什么,想要得到什么?您在文本中谈论了一个列表,但代码显示了字典访问。

标签: python dictionary sl4a


【解决方案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#keyword-arguments

【讨论】:

  • 感谢您的回复。我想知道的是如何将它作为参数传递,我现在知道它和任何其他类型一样简单。我查看了字典的内置函数(我不知道它们的存在),我发现我的“questType”是一个字符串而不是字典。我试图找出为什么知道,但至少我不再被困住了。谢谢大家
猜你喜欢
  • 2021-09-27
  • 1970-01-01
  • 2021-09-26
  • 2021-12-14
  • 2019-11-18
  • 2011-08-01
  • 2019-09-14
  • 2016-10-10
  • 2017-03-21
相关资源
最近更新 更多