在python中需要帮助以删除json列表中的字典

时间:2019-04-25 17:57:09

标签: 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上,但是在rowedbooks.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,并删除其中所借的字典。

1 个答案:

答案 0 :(得分:1)

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

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