代码之家  ›  专栏  ›  技术社区  ›  Kresten

具有重复字段的Python字典

  •  -1
  • Kresten  · 技术社区  · 8 年前

    我正在用Python构建一个字典,用于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>
    

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

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

    如果我这样做:

    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 回复  |  直到 8 年前
        1
  •  0
  •   bruno desthuilliers    8 年前

    好的,答案似乎很明显,甚至由“dataArray”名称暗示:如果你有一个项目列表,那么你想使用一个 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'
                    },
                },
            ]
        }