【问题标题】:How can I insert variables as values in a dict如何在字典中插入变量作为值
【发布时间】:2016-03-14 18:39:51
【问题描述】:

我正在尝试生成一个 json 有效负载以 POST 到 API,但我无法使其正常工作。

这就是我现在所拥有的;

def payload(user, macro_hostname, macro_servicedesc, macro_servicestate, macro_serviceoutput,nagios_url):
    payload = { 'username': '%s', 'text': '--- \n HOST: %s \n SERVICE: %s \n STATE: %s \n MESSAGE %s \n %s|see nagios for more information \n\n --- ' % user, macro_hostname, macro_servicedesc, macro_servicestate, macro_serviceoutput, nagios_url }
    return payload

除了丑陋且不是真正的pythonic之外,它还具有根本不工作的明显特征。我已经尝试过这种方法的不同变体,但我似乎一直在尝试使这项工作发挥作用;不幸的是,我真的没有找到一种方法来让它工作。

我知道 str.format() 比 %s 方法更受欢迎,但我很确定有一种完全不同的方式来做我想做的事情,这比我现在尝试做的事情要好得多。

【问题讨论】:

  • "它还有一个明显的特点就是完全不工作。" - 你能告诉我们出了什么问题吗?
  • 基本上出了问题的是我可能对字符串格式的了解不够,无法实际调试我的问题。 Anil 的回答对我来说就像是一种魅力。我真的应该最终找到一种更好的方法来做到这一点;但至少它现在可以工作。

标签: python json string dictionary


【解决方案1】:

如果我理解正确,您在为您的字典初始化字符串时犯了一个错误 --> 字符串格式错误 将 user 变量移动到字典中第一个项目旁边,并在最后一个变量中添加括号。

def payload(user, macro_hostname, macro_servicedesc, macro_servicestate, macro_serviceoutput,nagios_url):
    payload = { 'username': '%s' %user, 
            'text': '--- \n HOST: %s \n SERVICE: %s \n STATE: %s \n MESSAGE %s \n %s|see nagios for more information \n\n --- ' % (macro_hostname, macro_servicedesc, macro_servicestate, macro_serviceoutput, nagios_url) }
    return payload

【讨论】:

  • 另一个发表评论的人有一个可行的解决方案;但你的也很好用,实际上看起来更好。谢谢!
  • 我实际上更喜欢他的代码,我只是这样写它是为了与你写的保持一致,这样你就可以和你的比较并修复。下次:写下你遇到的错误。
猜你喜欢
  • 1970-01-01
  • 2016-08-10
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多