通过键值从JSON中提取信息

qq24tv8q  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(151)

我正在使用一个API,它以下面的结构发送JSON文件(我正在尝试在Python中使用API):

{
    "inventory": [
        {
            "ID": 10,
            "name": "Potion",
            "quantity": 20
        },
        {
            "ID": 15,
            "name": "Ether",
            "quantity": 12
        }
    ]
}

但是有几百件东西。
我试图做的是找到一个特定项目的数量,根据其唯一的“ID”键的值。所以我可能会根据ID '10'来寻找我所拥有的魔药数量,而我对如何做到这一点感到困惑。
我试过:

for key, value in inventory_data.items():
   if key["ID"] == 10:
      potion_index = index

尝试提取索引,这样我就可以写一个代码片段,根据药水福尔斯在库存中的位置提取索引,但这不起作用。
此外-清单和顺序的库存变化,所以我不能找到索引只是一次,是好的,我需要搜索每一次。

cvxl0en2

cvxl0en21#

下面是如何使用ID == 10获取项目的数量,或者如何删除项目(使用列表解析):

dct = {
    "inventory": [
        {"ID": 10, "name": "Potion", "quantity": 20},
        {"ID": 15, "name": "Ether", "quantity": 12},
    ]
}

# to get the quantity of item with 'ID' == 10:
qnt = next(d["quantity"] for d in dct["inventory"] if d["ID"] == 10)
print(qnt)

图纸:

20

要使用'ID' == 10删除dict,请使用列表理解:

dct["inventory"] = [d for d in dct["inventory"] if d["ID"] != 10]
print(dct)

图纸:

{"inventory": [{"ID": 15, "name": "Ether", "quantity": 12}]}

但我建议将清单从列表转换为字典:

# convert the inventory to dictionary:
dct["inventory"] = {d["ID"]: d for d in dct["inventory"]}

# searching for item with ID == 10 is now key lookup:
print(dct["inventory"][10]["quantity"])

图纸:

20

相关问题