我正在尝试在列表中的字典中填充键值对。我要填充的列表如下:
item_table = [
for i in range(jsonData.length) :
{
'item_no' : str(item_no[i]),
'part_no' : str(part_no[i]),
'description' : str(description[i]),
'quantity' : str(quantity[i]),
'unit_price' : str(unit_price[i]),
'total_price' : str(total_price[i])
},
]
正如您在此处看到的,我正在尝试在列表内使用for循环,但这给了我一个错误。 我从以下位置获取要插入的值:
for i in range(jsonData.length) :
unit_market_price[i] = jsonData[i]['unit_market_price']
unit_market_price[i] = float(unit_market_price)
markup_percentage[i] = jsonData[i]['markup_percentage']
markup_percentage[i] = float(markup_percentage)
unit_price[i] = calculateUitPrice(unit_market_price[i], markup_percentage[i])
item_no[i] = jsonData[i]['item_no']
part_no[i] = jsonData[i]['part_no']
description[i] = jsonData[i]['description']
quantity[i] = jsonData[i]['quantity']
顾名思义,jsonData是一个JSON对象。 先感谢您。
答案 0 :(得分:2)
你很近。只需使用list comprehension并每次使用循环创建字典
item_table = [
{
'item_no' : data['item_no'],
'part_no' : data['part_no'],
'description' : data['description'],
'quantity' : data['quantity'],
'unit_price' : calculateUitPrice(
float(data['unit_market_price']),
float(data['markup_percentage'])
),
'total_price' : str(total_price[i]) # <-- !! remember to change this part as your code doesn't currently have a definition on total_price
}
for data in jsonData
]
答案 1 :(得分:1)
您尝试的是无效的语法。如果您需要使用列表推导功能,我将在下面提供一个代码段。
但是,出于可读性考虑,您应该考虑简单地实例化一个空列表,然后在循环中向其添加新元素:
item_table = []
for i in range(jsonData.length):
item = {
'item_no': str(item_no[i]),
'part_no' : str(part_no[i]),
'description' : str(description[i]),
'quantity' : str(quantity[i]),
'unit_price' : str(unit_price[i]),
'total_price' : str(total_price[i])
}
item_table.append(item)
我还将提到在Python中使用len()
函数来获取列表的长度。
如第一段所述,这是上面代码的列表理解版本:
item_table = [
{
'item_no': str(item_no[i]),
'part_no' : str(part_no[i]),
'description' : str(description[i]),
'quantity' : str(quantity[i]),
'unit_price' : str(unit_price[i]),
'total_price' : str(total_price[i])
}
for i in range(jsonData.length)
]