簡體   English   中英

如何從字典中的字典中提取值?

[英]How to extract values from a dictionary within a dictionary?

我有一個使用 json.loads 從 JSON 創建的字典:

JSON:

data_load = '{"parts": ["part1", "part2", "part3", "part4"], "part1": {"price": 3.99, "quantity": 32}, "part2": {"price": 7.98, "quantity": 2}, "part3": {"price": 14.32, "quantity": 4}, "part4": {"price": 0.5, "quantity": 0}}'

data_dict = json.loads(data_load)

data_dict {'parts': ['part1', 'part2', 'part3', 'part4'], 'part1': {'price': 3.99, 'quantity': 32}, 'part2': {'price' : 7.98, 'quantity': 2}, 'part3': {'price': 14.32, 'quantity': 4}, 'part4': {'price': 0.5, 'quantity': 0}}

我正在嘗試從嵌套字典中的一部分訪問數量值。 我正在嘗試這樣做:

quantities = [item['quantity'] for d_ in data_dict.values() for item in d_]

但得到錯誤:

Traceback (most recent call last):
  File "<pyshell#71>", line 1, in <module>
    quantities = [item['quantity'] for d_ in data_dict.values() for item in d_]
  File "<pyshell#71>", line 1, in <listcomp>
    quantities = [item['quantity'] for d_ in data_dict.values() for item in d_]
TypeError: string indices must be integers

我究竟做錯了什么? 提前致謝!

您的代碼當前正在返回一個如下所示的列表:

['part1', 'part2', 'part3', 'part4', 'price', 'quantity', 'price', 'quantity', 'price', 'quantity', 'price', 'quantity']

如果列表理解迭代中的當前項是字典,則下面的代碼提取數量:

import json


data_load = '{"parts": ["part1", "part2", "part3", "part4"], "part1": {"price": 3.99, "quantity": 32}, "part2": {"price": 7.98, "quantity": 2}, "part3": {"price": 14.32, "quantity": 4}, "part4": {"price": 0.5, "quantity": 0}}'

data_dict = json.loads(data_load)

quantities = [d_["quantity"] for d_ in data_dict.values() if isinstance(d_, type({}))]

print(quantities)

這是你問題的答案:

quantities = [data_dict[p]['quantity'] for p in data_dict.get('parts')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM