Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要PYTHON JSONtoDICT帮助-看起来PYTHON正在将我的json字典转换解释为一个列表_Python_Json_Dictionary - Fatal编程技术网

需要PYTHON JSONtoDICT帮助-看起来PYTHON正在将我的json字典转换解释为一个列表

需要PYTHON JSONtoDICT帮助-看起来PYTHON正在将我的json字典转换解释为一个列表,python,json,dictionary,Python,Json,Dictionary,以下代码给出了错误信息: Traceback (most recent call last): File "AMZGetPendingOrders.py", line 66, in <module> item_list.append(item['SellerSKU']) TypeError: string indices must be integers 我不明白为什么Python认为这是一个列表而不是一个字典。当我打印id\u list时,它看起来像一本字典(大括号、

以下代码给出了错误信息:

Traceback (most recent call last):   File "AMZGetPendingOrders.py", line 66, in <module>
    item_list.append(item['SellerSKU']) TypeError: string indices must be integers
我不明白为什么Python认为这是一个列表而不是一个字典。当我打印
id\u list
时,它看起来像一本字典(大括号、单引号、冒号等)

打印(数据1)
显示我的字典

{
   'ListOrderItemsResponse':{
      '@xmlns':'https://mws.amazonservices.com/Orders/201 3-09-01',
      'ListOrderItemsResult':{
         'OrderItems':{
            'OrderItem':{
               'QuantityOrdered ':'1',
               'Title':'Delta Rothko Rolling Bicycle Stand',
               'ConditionId':'New',
               'Is Gift':'false',
               'ASIN':'B00XXXXTIK',
               'SellerSKU':'9934638',
               'OrderItemId':'49 624373726506',
               'ProductInfo':{
                  'NumberOfItems':'1'
               },
               'QuantityShipped':'0',
               'C onditionSubtypeId':'New'
            }
         },
         'AmazonOrderId':'112-9XXXXXX-XXXXXXX'
      },
      'ResponseM etadata':{
         'RequestId':'8XXXXX8-0866-44a4-96f5-XXXXXXXXXXXX'
      }
   }
}

有什么想法吗?

因为您正在迭代dict中的每个键值:

{'QuantityOrdered ': '1', 'Title': 'Delta Rothko Rolling Bicycle Stand', 'ConditionId': 'New', 'Is Gift': 'false', 'ASIN': 'B00XXXXTIK', 'SellerSKU': '9934638', 'OrderItemId': '49 624373726506', 'ProductInfo': {'NumberOfItems': '1'}, 'QuantityShipped': '0', 'C onditionSubtypeId': 'New'}
所以,项中的第一个值将是“QuantityOrdered”,您试图访问这个字符串,就像它是字典一样

您只需执行以下操作:

id_list.append(data1['ListOrderItemsResponse']['ListOrderItemsResult']['OrderItems']['OrderItem']['SellerSKU']))

避免字典中的for循环

我猜您正在尝试迭代OrderItems并查找它们的SellerSKU值

{
   'ListOrderItemsResponse':{
      '@xmlns':'https://mws.amazonservices.com/Orders/201 3-09-01',
      'ListOrderItemsResult':{
         'OrderItems':{
            'OrderItem':{
               'QuantityOrdered ':'1',
               'Title':'Delta Rothko Rolling Bicycle Stand',
               'ConditionId':'New',
               'Is Gift':'false',
               'ASIN':'B00XXXXTIK',
               'SellerSKU':'9934638',
               'OrderItemId':'49 624373726506',
               'ProductInfo':{
                  'NumberOfItems':'1'
               },
               'QuantityShipped':'0',
               'C onditionSubtypeId':'New'
            }
         },
         'AmazonOrderId':'112-9XXXXXX-XXXXXXX'
      },
      'ResponseM etadata':{
         'RequestId':'8XXXXX8-0866-44a4-96f5-XXXXXXXXXXXX'
      }
   }
}
for item in data1['ListOrderItemsResponse']['ListOrderItemsResult']['OrderItems']:
  item_list.append(item['SellerSKU'])

成功了!它给了我每个订单的销售价格。现在,如果我可以问一个后续问题-你知道我将如何提取SellerSKU和QuantityOrdered,它们之间用逗号分隔吗?类似地,data1['ListOrderItemsResponse']['ListOrderItemsResult']['OrderItems']['OrderItem']['QuantityOrdered'],请注意在键“QuantityOrdered”的末尾有空格,访问时不要忘记包含空格,如果答案对你有用,你介意把它标记为正确吗:)不幸的是,这给了我同样的错误信息。不过,上面的单行解决方案确实有效。如果项['SellerSKU']看起来像以下项的重复项,请尝试项_list.append(str(项['SellerSKU']):