Python使用数组元素作为多维数组中的索引

时间:2014-07-07 14:28:56

标签: python arrays

我正在解析SOAP查询(wsdl)的结果,并将结果放在一个数组数组中,如:

[(item){
   item[] =
      (item){
         key[] =
            "cdr_id",
         value[] =
            "201407000000000431",
      },
      (item){
         key[] =
            "cdr_date",
         value[] =
            "2014-07-07 07:47:12",
      },
... (snipped for brevity - 81 items in total)
      (item){
         key[] =
            "extradata",
         value[] = <empty>
      },
 }]

我需要提取与特定键对应的单个值。 我遇到了两个问题:

  1. 如何将键映射到值? (否则我在result.item[][]
  2. 上嵌套循环
  3. 如何将值作为整数返回?
  4. 我对python很新,如果问题看起来太简单,请提前抱歉。

    我当前的代码看起来有点像:

    success_calls =  client.service.selectRowset(tables[table], sfilter, None, None, None)[1]
    total_time = calls_num = 0
    for call in success_calls:
       for key in range(len(call.item)):
           if call.item[key][0] is "elapsed_time":
               item_value = call.item[key][1]
       total_time += int(item_value)
    

1 个答案:

答案 0 :(得分:0)

您可以为所有这些值创建Dictionary,以使用特定键访问特定值。字典是散列表的pythons实现。请注意,这只有在您多次访问字典时才有意义,因为您需要在创建哈希表期间运行数组并为每个条目计算哈希值。如果您只想提取单个值,最好的解决方案是像在代码示例中一样运行数组。在最坏的情况下,您的复杂度为O(n)

您可以使用int("12345")轻松地在python中将String解析为Integer。不过要小心。如果您的字符串不能解析为整数,则可能会引发ValueError异常。如果您的elapsed_time是真实数字而不是自然数字,则可以使用float("22.2123")

解析