带有重复字段的Python字典

时间:2017-09-22 09:43:51

标签: python python-3.x dictionary

我用Python构建一个字典,用于SOAP API。

我的SOAP API接受如下输入:

<dataArray>
  <AccountingYearData>
    <Handle>
      <Year>string</Year>
    </Handle>
    <Year>string</Year>
    <FromDate>dateTime</FromDate>
    <ToDate>dateTime</ToDate>
    <IsClosed>boolean</IsClosed>
  </AccountingYearData>
  <AccountingYearData>
    <Handle>
      <Year>string</Year>
    </Handle>
    <Year>string</Year>
    <FromDate>dateTime</FromDate>
    <ToDate>dateTime</ToDate>
    <IsClosed>boolean</IsClosed>
  </AccountingYearData>
</dataArray>

将此作为完整字符串 https://api.e-conomic.com/secure/api1/EconomicWebService.asmx?op=AccountingYear_CreateFromDataArray

注意该字段如何多次出现。

如何使用此数据创建Python dict?

如果我这样做:

data = {
  'dataArray':{
    'AccountingYearData':{
      'Handle':{'Year':'2017'}, 
      'Year':'2017',
      'FromDate':'2017-01-01', 
      'ToDate':'2017-12-31', 
      'IsClosed':'False'
    },
    'AccountingYearData':{
      'Handle':{'Year':'2017'}, 
      'Year':'2017',
      'FromDate':'2017-01-01', 
      'ToDate':'2017-12-31', 
      'IsClosed':'False'
    }
  }
}

我明白了:

>>> type (data)
<type 'dict'>
>>> data {
  'dataArray': {
    'AccountingYearData': {
      'IsClosed': 'False', 
      'FromDate': '2017-01-01', 
      'Handle': {'Year': '2017'}, 
      'ToDate': '2017-12-31', 
      'Year': '2017'
    }
  }
}

我认为这是预期的,但现在我需要它。

1 个答案:

答案 0 :(得分:0)

嗯,答案似乎很明显,甚至是#34; dataArray&#34; name:如果你有一个项目列表,那么你想使用list来存储它们:

data = {
    'dataArray':[
        {
            'AccountingYearData':{
                'Handle':{'Year':'2017'}, 
                'Year':'2017',
                'FromDate':'2017-01-01', 
                'ToDate':'2017-12-31', 
                'IsClosed':'False'
                },
            },
        {
            'AccountingYearData':{
                'Handle':{'Year':'2017'}, 
                'Year':'2017',
                'FromDate':'2017-01-01', 
                'ToDate':'2017-12-31', 
                'IsClosed':'False'
                },
            },
        ]
    }