首页 > 解决方案 > 在 python 中需要帮助删除 json 列表中的字典

问题描述

所以,我有一个任务,我需要为借来的书建立一个管理。我在 listofbooks.json 中有一个书籍清单(100 本书)。从 listofbooks.json 中,我可以将书籍添加到另一个名为 Borrowedbooks.json 的 json 文件中,但问题是我无法“借出”这本书。所以我试图“借出”一本书是:

import json
def DeleteBook(p):

for x in B:
    if x['title'] == C[p]['title']:
        del B[p]
        with open('Borrowedbooks.json','w') as output:
            json.dump(B,output,indent=2)
            print("Deleted succesfully!")
            break


    else:
        print("The book that you want to delete doesn't exist")
        break


C = json.load(open('ListOfBooks.json'))
B = json.load(open('Borrowedbooks.json'))

这段代码的问题是,如果有人借出 ID 2 和 ID 4 的书,它会检查索引,但我想要的是它检查书的 ID,但这就是我不能做的事情。borrowbooks.json 文件中的索引不正确,它将转到 else 语句。所以在我的 ListOfBooks.json 文件中,ID 为 2 的书在索引 2 上,但在 borrowedbooks.json 中,ID 为 2 的书在索引 0 上。所借的books.json 如下所示:

[
  {
    "ID": 2,
    "author": "Dante Alighieri",
    "country": "Italy",
    "imageLink": "images/the-divine-comedy.jpg",
    "language": "Italian",
    "link": "https://en.wikipedia.org/wiki/Divine_Comedy\n",
    "pages": 928,
    "title": "The Divine Comedy",
    "year": 1315
  },
  {
    "ID": 3,
    "author": "Unknown",
    "country": "Sumer and Akkadian Empire",
    "imageLink": "images/the-epic-of-gilgamesh.jpg",
    "language": "Akkadian",
    "link": "https://en.wikipedia.org/wiki/Epic_of_Gilgamesh\n",
    "pages": 160,
    "title": "The Epic Of Gilgamesh",
    "year": -1700
  }
 ]

我的问题是如何创建一个函数,让用户在其中写入书籍 ID,它会删除借来的books.json 中的字典。

标签: pythonjson

解决方案


因此,据我了解,当您将 2 输入到返回的图书 ID 变量或数组中时,您只能获得 2 的索引,而不是 2 的 ID。

您可以做的是使用 bookID = json.get('ID')一个功能来检查类似于您在那里所做的事情。您正在使用数组,因此请记住这一点。


推荐阅读