从AutotaskAPI解析PickList值

时间:2015-09-24 18:32:25

标签: python python-2.7 suds

我试图将从查询到AutotaskAPI的数值与匹配该数字的选项列表与单词中的实际定义进行匹配。使用以下代码段:

for entity in entities:
    for key, value in enumerate(self.queueCode["PicklistValues"]["PickListValue"][0]["Value"]):
        print value

返回系统中的所有故障单及其数值,但for key, value in enumerate(self.queueCode["PicklistValues"]["PickListValue"][0]["Value"])是我用来获取选项列表值的方法。因此,此印刷品将返回" 30098742"从:

(PickListValue){
   Value = "30098742"
   Label = "BF Onsite"
   IsDefaultValue = False
   SortOrder = 44
   parentValue = None
   IsActive = True
   IsSystem = False

如何获取所有领料单值和相应的标签?

更新:

以下代码将在获取Value的数字值方面做我想要的,但是,我没有迭代所有的选项列表,所以在我的前任,[0]不会去[0],[1],[2]等,它们会给我所有选项列表的值。

for key, value in enumerate(self.queueCode["PicklistValues"]["PickListValue"][0]["Value"]):
         print value

1 个答案:

答案 0 :(得分:0)

由于字典中的"Value"条目是数字的字符串表示形式,当您enumerate时,它实际上只是迭代字符串中的字符。示例中的enumerate对象将为您提供每个字符的索引以及字符,如下所示:

>>> list(enumerate("30098742"))
[(0, '3'), (1, '0'), (2, '0'), (3, '9'), (4, '8'), (5, '7'), (6, '4'), (7, '2')]

如果您想要的第一个PickList是self.queueCode["PicklistValues"]["PickListValue"][0],那么您可能需要枚举PickLists的基础列表,而不是明确地获取它。类似的东西:

for idx, plist in enumerate(self.queueCode["PicklistValues"]["PickListValue"]):
    print "PickList with index {} has value {} and label {}".format(
        idx, plist["Value"], plist["Label"]
    )

顺便说一句,我不建议写for key, value in enumerate(sequence),因为“密钥”实际上不是一个密钥,而是一个计数你所枚举的项目的序数。在这种情况下,它对应一个索引,所以我可能在循环中使用iidx之类的名称。