如何检查嵌套在循环中的字典中是否存在值

2024-09-28 21:55:01 发布

您现在位置:Python中文网/ 问答频道 /正文

如果项目名称已经存在于嵌套在列表中的词典中,我将尝试增加quantity值,我计划使用的方法是检查项目名称是否已经存在于词典中,然后添加到列表中,否则如果它确实存在于词典中,则将数量更新1。你知道吗

我不太确定如何检查itemname是否在嵌套字典中,我四处查看了一下,但没有发现任何东西

@app.route("/AddToCart", methods=["POST", "GET"])
def addToCart():
    itemId = int(request.form.get("productId"))
    MenuItem = Menu.query.get(itemId)

    if MenuItem is None:
        return render_template("error.html", errorMessage="There has been an issue adding this item to your basket")

    sVars = session['cart']

    if(MenuItem.ItemName not in sVars):
        sVars.append({'Itemname': MenuItem.ItemName, 'Itemprice': float(MenuItem.ItemPrice), 'Qty': 0})
    else:
        sVars['Qty'] += 1

    session['cart'] = sVars

    allPrices = Money(amount=sum([x['Itemprice'] for x in sVars]), currency='GBP')

    return render_template("cart.html", cartSession=session['cart'],allPrices=allPrices)

Tags: 列表getreturnifsessionhtmltemplaterender
3条回答
sVars=[]


flag=0
indexgot=0

for i in sVars:
    if(i['Itemname']=='item1'):
        flag=1
        indexgot=i


if(not flag):
    sVars.append({'Itemname': "item1", 'Itemprice': float(50), 'Qty': 0})
else:
    sVars[sVars.index(indexgot)]['Qty'] += 1

print(sVars)

只是一种方法。。。来解决你的问题。你知道吗

假设你有这样的清单:

ls = [{"Itemname": "Test", "Itemprice": 1, "Qty": 0}, {"Itemname": "Test1", "Itemprice": 1, "Qty": 0}]

然后您可以使用这样的函数来更新项目:

def updateItems(inpdic):
    for item in ls:
        if item["Itemname"] == inpdic["Itemname"]:
            item["Qty"] += 1
            return
    ls.append(inpdic)

检查列表中的所有项,如果存在同名项,则增加数量并退出,否则追加。你知道吗

嗨,这是我的工作

def check_exist(my_dict, key):
    if key in my_dict.keys():
        return True
    return False

相关问题 更多 >