Python 字典在While循环中被覆盖 def get_list_expenses(): 费用清单={} 打印('请键入费用名称,后跟费用价格') 尽管如此: 名称=输入('费用名称:') 价格=整数(输入('费用价格:')) 费用清单更新({ “名称”:名称, "价格":价格,, }) cont=input('要添加另一个吗?[y/n]”)。lower() 如果cont==“n”: 打破 打印(类型(费用清单)) 打印(费用清单) 退货费用清单 输入========================== 请键入费用名称,后跟费用价格 费用名称:食品 费用价格:100 想再加一个吗?[y/n]y 费用名称:汽车保险 费用价格:200 想再加一个吗?[是/否]n 输出========================= {'name':'car','price':200}

Python 字典在While循环中被覆盖 def get_list_expenses(): 费用清单={} 打印('请键入费用名称,后跟费用价格') 尽管如此: 名称=输入('费用名称:') 价格=整数(输入('费用价格:')) 费用清单更新({ “名称”:名称, "价格":价格,, }) cont=input('要添加另一个吗?[y/n]”)。lower() 如果cont==“n”: 打破 打印(类型(费用清单)) 打印(费用清单) 退货费用清单 输入========================== 请键入费用名称,后跟费用价格 费用名称:食品 费用价格:100 想再加一个吗?[y/n]y 费用名称:汽车保险 费用价格:200 想再加一个吗?[是/否]n 输出========================= {'name':'car','price':200},python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我是python新手,希望尝试制作一个预算应用程序,以节省我将信息手动输入excel的时间。我的想法是创建一个循环,以费用的名义和每月的价格收取费用。我想把它放进字典,这样我就可以。在我需要的时候得到信息。然而,我的字典不断被改写。我在网上找到了几种不同的解决方案,但都没有效果。提前感谢。使用字典上的更新方法,您基本上是在每次迭代中从头开始重写字典,因此,您在最后(最后一次)看到一个值 我建议创建一个空列表,然后在每次迭代时附加一个新的值字典: def get_list_expenses():

我是python新手,希望尝试制作一个预算应用程序,以节省我将信息手动输入excel的时间。我的想法是创建一个循环,以费用的名义和每月的价格收取费用。我想把它放进
字典
,这样我就可以
。在我需要的时候得到
信息。然而,我的字典不断被改写。我在网上找到了几种不同的解决方案,但都没有效果。提前感谢。

使用字典上的更新方法,您基本上是在每次迭代中从头开始重写字典,因此,您在最后(最后一次)看到一个值

我建议创建一个空列表,然后在每次迭代时附加一个新的值字典:

def get_list_expenses():
  expense_list = {}
  print('Please type the name of the expense followed by the price of the expense')
  while True:
    name = input('Name of expense: ')
    price = int(input('Price of expense: '))
    expense_list.update({
        'name': name,
        'price': price,
    })
    cont = input('Want to add another? [y/n] ').lower()
    if cont == 'n':
        break
 print(type(expense_list))
 print(expense_list)
 return expense_list

Input ==========================
Please type the name of the expense followed by the price of the expense
Name of expense: Food
Price of expense: 100
Want to add another? [y/n] y
Name of expense: Car Insurance
Price of expense: 200
Want to add another? [y/n] n

Output =========================
<class 'dict'>
{'name': 'car', 'price': 200}
应该是:

expense_list.update({
    'name': name,
    'price': price,
})

字典是一个键值对。在您的案例中,关键是“费用名称”,价值是价格。按照创建的方式,字典中有两个键。第一个键是“名称”,第二个键是“价格”

您可以简单地执行以下操作:

expense_list.update({name,price})

如果名称存在,它将更新,否则将添加。

制作
费用清单
实际清单:

expense_list[name] = price
然后将
附加到它

expense_list = []

也许你想保留一份费用清单(每项费用都是一本字典),但你不清楚你想要什么。您想让
费用清单
成为姓名/价格清单吗,您想让
费用清单[姓名]
成为与
姓名
相关联的价格清单,还是与
姓名
相关联的总金额?您肯定想用
[]
operator:)请指定所需的输出和/或用法,以便我们提供有用的建议和代码。这并不能解决OP问题;即使它比“更新”更好。OP想要一份字典列表,否则就不需要一份loopOP并没有明确说明他需要一份字典列表。如果他有一个列表,并且必须迭代以获得所需的值,那么它将解决什么问题。从他的陈述中,我认为他需要的只是费用的价格和快速查找。while循环就是不停地添加条目&其他什么都没有。“然而,我的字典一直被覆盖”:OP显然没有正确的数据结构
expense_list = []
expense_list.append({
    'name': name,
    'price': price,
    })