[英]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.