gpt4 book ai didi

python - 如何更新列表而不是删除以前的输入

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:24 25 4
gpt4 key购买 nike

我是编程新手,目前正在编写我的第一个程序。我正在尝试将字典添加到列表并让它存储它,每次我用新输入更新列表时,最后一个输入都会被删除。帮助!!!

我有一种感觉,它与直接更新列表而不是有中介有关。或许?

def newfood(food, caloric):
foodList = []
newFoodList = ({food:caloric})
foodList.append(newFoodList)
print(foodList)

苹果:33,樱桃:34,Mlife:42

每次它收到新的输入时,它都应该更新列表以包含旧的字典和新的字典

最佳答案

正如其他人所指出的,问题在于您正在修改一个在函数外部不可用的变量。

一个解决方案是声明 foodList global:

def newfood(food, caloric):
global foodList
foodList = []
newFoodList = ({food:caloric})
foodList.append(newFoodList)
print(foodList)

newfood('apple', 100)

另一种方法是在函数外部声明 foodList,但这是一种冒险的做事方式:根据您编写代码的方式,您最终可能会“隐藏”全局变量。

foodList = []
def newfood(food, caloric):
newFoodList = ({food:caloric})
foodList.append(newFoodList)
print(foodList)

newfood('apple', 100)

最好的解决方案可能是让函数返回您想要的内容,或者编写它以修改给定的列表:

def newfood(foodList, afood, acaloric):
return foodList + [{afood:acaloric}]

foodList = []
foodList = newfood(foodList, 'apple', 100)
print(foodList)

或者:

def newfood(afoodlist, afood, acaloric):
foodList.append({afood:acaloric})

foodList = []
newfood(foodList, 'apple', 100)
print(foodList)

或者,考虑到您正在做的事情,将整个事情写成一个类:

class FoodList(list):
def add(self, food, caloric):
self.append({food:caloric})

foodList = FoodList()
foodList.add('apple', 100)
print(foodList)

注意:您正在创建一个 newFoodList 作为 ({food:caloric}) - 然而,这实际上只是一个 dict 字典,在这种情况下,括号不会做任何事情。此处显示的备选方案执行相同的操作,但看起来您并不是真的在查找字典列表,因此您可能应该重新考虑您的数据结构。

关于python - 如何更新列表而不是删除以前的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57619458/

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