Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 附加到字典中的列表_Python - Fatal编程技术网

Python 附加到字典中的列表

Python 附加到字典中的列表,python,Python,目标:将值['itemArray']中的项目附加到产品['items']-请参见函数fba\u订单 问题:当前代码仅将值['itemArray']的最后一项附加到产品['Items'] 电流输出: {'Items': [{'SellerFulfillmentOrderItemId': 266804219, 'SellerSKU': 'IX-GZ31-31K6', 'Quantity': 1}, {'SellerFulfillmentOrderItemId': 266804219, 'Seller

目标:将
值['itemArray']
中的项目附加到
产品['items']
-请参见函数
fba\u订单

问题:当前代码仅将
值['itemArray']
的最后一项附加到
产品['Items']

电流输出:

{'Items': [{'SellerFulfillmentOrderItemId': 266804219, 'SellerSKU': 'IX-GZ31-31K6', 'Quantity': 1}, {'SellerFulfillmentOrderItemId': 266804219, 'SellerSKU': 'IX-GZ31-31K6', 'Quantity': 1}]}
正确的输出是:

{'Items': [{'SellerFulfillmentOrderItemId': 266804218, 'SellerSKU': 'KM-090914-840-BEARLAPTOP', 'Quantity': 1}, {'SellerFulfillmentOrderItemId': 266804219, 'SellerSKU': 'IX-GZ31-31K6', 'Quantity': 1}]}
代码:


您正在反复使用
项所引用的词典
;附加这一本词典不会创建新的副本。相反,您正在向该词典添加多个引用。当您继续修改字典时,所有这些引用都将显示这些更改

最好为每个循环迭代生成一个全新的字典:

for items in VALUE['itemArray']:
    item = {
        'Quantity': items['item']['quantity'],
        'SellerFulfillmentOrderItemId': items['item']['itemID']
        'SellerSKU': items['item']['sk'],
    }
    products['Items'].append(item)

问题在于,您正在为
for
循环之外创建项,然后只是更改for循环内的值并将其附加到列表中

字典是参考,因此即使在添加到
产品['Items']
列表后,如果更改
项目
字典,它也会更改添加到列表的
项目

您想将
项初始化为
for
循环中的一个新字典

范例-

def fba_order():
    address = {}
    products = {'Items': []}
    Items = []
    address['City'] = VALUE['shippingAddress']['cityName']
    address['CountryCode'] = VALUE['shippingAddress']['country']
    address['Line1'] = VALUE['shippingAddress']['street1']
    address['Line2'] = VALUE['shippingAddress']['street2']
    address['Name'] = VALUE['shippingAddress']['name']
    address['PostalCode'] = VALUE['shippingAddress']['postalCode']
    address['StateOrProvinceCode'] = VALUE['shippingAddress']['stateOrProvince']
    for items in VALUE['itemArray']:
        item = {}
        item['Quantity'] = items['item']['quantity']
        item['SellerFulfillmentOrderItemId'] = items['item']['itemID']
        item['SellerSKU'] = items['item']['sk']
        products['Items'].append(item)
        continue
    print address, '\n', products

是dict对象。将相同的
对象附加两次。您应该在
中为
启动
item={}
,谢谢您。。。这让我发疯
def fba_order():
    address = {}
    products = {'Items': []}
    Items = []
    address['City'] = VALUE['shippingAddress']['cityName']
    address['CountryCode'] = VALUE['shippingAddress']['country']
    address['Line1'] = VALUE['shippingAddress']['street1']
    address['Line2'] = VALUE['shippingAddress']['street2']
    address['Name'] = VALUE['shippingAddress']['name']
    address['PostalCode'] = VALUE['shippingAddress']['postalCode']
    address['StateOrProvinceCode'] = VALUE['shippingAddress']['stateOrProvince']
    for items in VALUE['itemArray']:
        item = {}
        item['Quantity'] = items['item']['quantity']
        item['SellerFulfillmentOrderItemId'] = items['item']['itemID']
        item['SellerSKU'] = items['item']['sk']
        products['Items'].append(item)
        continue
    print address, '\n', products