Python 如何筛选和获取值​;从json

Python 如何筛选和获取值​;从json,python,json,Python,Json,我有一个类似下面的json { "headers": [ "product_id", "price", "is_discontinued" ], "product_stores": [ [ 2093085822, 23.58, false ], [ 2093085837, 16.

我有一个类似下面的json

{
  "headers": [
    "product_id",
    "price",
    "is_discontinued"
  ],
  "product_stores": [
    [
      2093085822,
      23.58,
      false
    ],
    [
      2093085837,
      16.1,
      true
    ],
   ...

这是数据帧中的一个列,包含其他列,如ID、created_at等。我希望从该列中获得所有产品ID,它可以是一个类似“20930858222093085837”的字符串,但只有当“is_contracted”为真时,解决方案才非常简单。只需使用一些列表理解:

json_dict = # Load the json here
what_you_want = [item[0] for item in json_dict["product_stores"] if item[2]]

与Rafael的答案类似,但您也可以在理解中使用命名变量,以保持可读性:

output = [pid for pid, price, discontinued in json_dict["product_stores"] if discontinued]

请记住,所有子列表的长度必须为3才能正常工作

是的,已经修复。谢谢你提醒medid不要这样做。错误“字符串索引必须是整数”补充,如果您不需要
price
,您可以将其替换为下划线
是的,我本来打算这样做,但我保留了它,因为它不是一个很长的名称。下划线仍然有一个指定的变量,它只是一个模糊的名称。我通常只在名称很长且不需要编辑时使用下划线。错误:“字符串索引必须是整数”首先,您需要将JSON字符串转换为dict对象才能正常工作。请不要只是要求我们为您解决问题。向我们展示你是如何试图自己解决问题的,然后向我们展示结果是什么,并告诉我们为什么你觉得它不起作用。给我们一个清楚的解释什么是不起作用的,并提供一个解决方案。阅读一定要参加参观并阅读这篇文章。