亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python JSON 查找特定數據

Python JSON 查找特定數據

小怪獸愛吃肉 2023-06-13 16:19:58
我有這個 JSON 文件結構(從網站解析的銷售產品)。JSON的一部分:{ "shopName": "Shop", "promotions": [  {   "productName": "Cookies",   "oldPrice": 11.99,   "newPrice": 7.99,   "discount": 33  },  {   "productName": "Butter",   "oldPrice": 27.15,   "newPrice": 21.99,   "discount": 19  },  {   "productName": "Milk",   "oldPrice": 30.45,   "newPrice": 21.99,   "discount": 27  } ]}問題是如何只顯示比給定數字更大的折扣的產品(具有所有特征:名稱、舊價格、新價格、折扣)。
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

這應該工作:


data = {

 "shopName": "Shop",

 "promotions": [

  {

   "productName": "Cookies",

   "oldPrice": 11.99,

   "newPrice": 7.99,

   "discount": 33

  },

  {

   "productName": "Butter",

   "oldPrice": 27.15,

   "newPrice": 21.99,

   "discount": 19

  },

  {

   "productName": "Milk",

   "oldPrice": 30.45,

   "newPrice": 21.99,

   "discount": 27

  }

 ]

}


MIN_PRICE = 20


filtered_products = [p for p in data['promotions'] if p['discount'] >= MIN_PRICE]


print(filtered_products)


這打印:


[

  {

   "productName": "Cookies",

   "oldPrice": 11.99,

   "newPrice": 7.99,

   "discount": 33

  },

  {

   "productName": "Milk",

   "oldPrice": 30.45,

   "newPrice": 21.99,

   "discount": 27

  }

]

另一種方法是使用filter函數:


filtered_products = list(filter(lambda p: p['discount'] > MIN_PRICE, data['promotions']))



查看完整回答
反對 回復 2023-06-13
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

如果你已經解析了 JSON,你可以使用這個


from typing import Dict, Any


parsed_json = {

"shopName": "Shop",

"promotions": [

    {"productName": "Cookies", "oldPrice": 11.99, "newPrice": 7.99, "discount": 33},

    {"productName": "Butter", "oldPrice": 27.15, "newPrice": 21.99, "discount": 19},

    {"productName": "Milk", "oldPrice": 30.45, "newPrice": 21.99, "discount": 27},

    ],

}



def find_specific_data(num: int, data: Dict[Any, Any]) -> Dict[Any, Any]:

    for value in data["promotions"]:

        if value["discount"] > num:

            print(value)


find_specific_data(26, parsed_json)


In: find_specific_data(26)

Out: {'productName': 'Cookies', 'oldPrice': 11.99, 'newPrice': 7.99, 'discount': 33}

     {'productName': 'Milk', 'oldPrice': 30.45, 'newPrice': 21.99, 'discount': 27}


查看完整回答
反對 回復 2023-06-13
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

試試這個。


import json, pandas as pd


df=pd.DataFrame(json.loads('{ "shopName": "Shop", "promotions": [  {   "productName": "Cookies",   "oldPrice": 11.99,   "newPrice": 7.99,   "discount": 33  },  {   "productName": "Butter",   "oldPrice": 27.15,   "newPrice": 21.99,   "discount": 19  },  {   "productName": "Milk",   "oldPrice": 30.45,   "newPrice": 21.99,   "discount":27  } ]}')['promotions'])


print(df)


  productName  oldPrice  newPrice  discount

0     Cookies     11.99      7.99        33

1      Butter     27.15     21.99        19

2        Milk     30.45     21.99        27


print(df[df.discount==df.discount.max()])


 productName  oldPrice  newPrice  discount

0     Cookies     11.99      7.99        33


查看完整回答
反對 回復 2023-06-13
  • 3 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號