gpt4 book ai didi

python - 如何从字典列表中修改字典的值

转载 作者:行者123 更新时间:2023-11-30 21:30:53 25 4
gpt4 key购买 nike

我正在声明一个名为add_to_cart(db, itemid, quantity) 的方法。每当调用该方法时,它都会在数据库中查找 session 数据。 session 数据包含字典列表。此方法的目的是为列表创建一个新条目(字典)或更新现有条目的值。字典有以下键:id、quantity

到目前为止,我已经开发了以下代码。首先从数据库中获取数据后,我将 itemid 与字典键匹配:'id'。如果 itemid 与字典的任何值都不匹配,那么它将向该列表附加一个新字典。

def add_to_cart(db, itemid, quantity):
# ......
row = cursor.fetchone()
if row is not None:
cart = json.loads(row['data'])
for dic in cart:
if str(dic.get("id")) == str(itemid):
dic['quantity'] = int(dic['quantity']) + quantity
data = json.dumps(cart)
# update the 'data' to the database
break
else:
if counter == len(cart):
item = {
'id': itemid,
'quantity': quantity
}
cart.append(item)
data = json.dumps(cart)
# update the 'data' to the database
break

让最初的购物车是这样的:

[{'id': '40', 'quantity': '2'}, {'id': '41', 'quantity': '5'}]

当我将商品 40 中的 1 件添加到购物车时,这应该是这样的:

[{'id': '40', 'quantity': '3'}, {'id': '41', 'quantity': '5'}]

但我得到了:

[{'id': '40', 'quantity': '2'}, {'id': '41', 'quantity': '5'}, {'id': '40', 'quantity': '1'}]

最佳答案

当您执行 cart.append(item) 时,您正在向列表中添加一个新词典,因此列表
[{'id': '40', 'quantity': '2'}, {'id': '41', 'quantity': '5'}]

最终成为

[{'id': '40', 'quantity': '2'}, {'id': '41', 'quantity': '5'}, {'id': '40 ', '数量': '1'}]

但是您想在该词典列表中找到匹配的 id,并添加到该词典的数量中。

所以代码如下所示:

li = [{'id': '40', 'quantity': '2'}, {'id': '41', 'quantity': '5'}]

def add_elem(li, id, to_add):

#Iterate over the dictionaries
for item in li:
#If the id is found
if str(id) in item.values():
#Increment the quantity
item['quantity'] = str(int(item['quantity']) + to_add)

#Return the updated list
return li

print(add_elem(li, 40, 1))

输出将是

[{'id': '40', 'quantity': '3'}, {'id': '41', 'quantity': '5'}]

关于python - 如何从字典列表中修改字典的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56223034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com