#python 我用for遍历了列表中的字典,但是在调字典中的get()时报错了,想请教一下

问题遇到的现象和发生背景

我用for遍历了列表中的字典,但是在调字典中的get()时报错了,想请教一下

问题相关代码,请勿粘贴截图
       print('**************图书管理系统**************')
     library = [{'name':'三体','author':'刘慈欣','price':24,'number':5},
           {'name':'流浪地球','author':'刘慈欣','price':26,'number':9}
    ,{'name':'平凡的世界','author':'路遥','price':108,'number':3}
    ,{'name':'活着','author':'余华','price':20,'number':4}]
   while 1:
      print('1.借书\n2.还书\n3.查询\n4.退出')
      choice = int(input('请选择功能:'))

    if choice == 1:
        i_name = input('请输入所要借阅的书:')
        for book in library:
            if book.get('name') == i_name:
                print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
    elif choice == 2:
        i_name = input('请输入所要借阅的书:')
        for book in library:
            if book.get('name') == i_name:
                print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
                book.get('number') -= 1
    elif choice == 3:
        pass
    elif choice == 4:
        import time
        print('正在退出系统,请稍后~')
        time.sleep(2)
        print('退出成功!')
        break

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

想在实现借书功能后,将字典中‘number’对应的value值减1

这个字典的使用,没用到字典的特点。改一下,供参考。

import time
library = {'三体': {'name': '三体', 'author': '刘慈欣', 'price': 24, 'number': 5}, '流浪地球': {'name': '流浪地球', 'author': '刘慈欣', 'price': 26, 'number': 9}, '平凡的世界': {'name': '平凡的世界', 'author': '路遥', 'price': 108, 'number': 3}, '活着': {'name': '活着', 'author': '余华', 'price': 20, 'number': 4}}

print('**************图书管理系统**************')
while 1:
    print('1.借书\n2.还书\n3.查询\n4.退出')
    choice = int(input('请选择功能:'))

    if choice == 1:
        i_name = input('请输入所要借阅的书:')
        if i_name in library:
            print('您所要借的书当前还有{}本\n请妥善保管好书籍并及时归还'.format(library[i_name]["number"]))
            library[i_name]["number"] = library[i_name]["number"] -1
    elif choice == 2:
        i_name = input('请输入所要借阅的书:')
        if i_name in library:
            library[i_name]["number"] = library[i_name]["number"] + 1
            print('您所要还的书当前还有{}本'.format(library[i_name]["number"]))

    elif choice == 3:
        pass
    elif choice == 4:
        print('正在退出系统,请稍后~')
        time.sleep(2)
        print('退出成功!')
        break

book.get('number') -= 1这句代码有问题

for book in library:
          if book['name'] == i_name:
              print(f'您所要借的书当前还有{book.get("number")}本\n请妥善保管好书籍并及时归还')
              book['number'] -= 1

那就这样取吧。

library[0].get('number') 只能取值,不能赋值的
library[0]['number'] -= 1 只能这样赋值
library[0]的索引可以通过enumerate(book)获得,代码大致如下:
for idx, book in enumerate(library):
if book.get('name') == i_name:
library[idx]['name'] -= 1