有一個 JSON 檔案的一部分:
{
"payload": {
"orders": [
{
"quantity": 1,
"platinum": 4,
"visible": true,
"order_type": "sell",
"user": {
"reputation": 5,
"region": "en",
"last_seen": "2022-11-17T08:15:43.360 00:00",
"ingame_name": "Noxxat",
"id": "5b50d73859d885026b523cd1",
"avatar": null,
"status": "offline"
},
"platform": "pc",
"region": "en",
"creation_date": "2020-09-04T15:30:41.000 00:00",
"last_update": "2021-11-19T09:41:43.000 00:00",
"id": "5f525da1c98cd000d7513813"
},
{
"order_type": "sell",
"visible": true,
"quantity": 2,
"platinum": 6,
"user": {
"reputation": 3,
"region": "en",
"last_seen": "2022-11-18T14:22:53.023 00:00",
"ingame_name": "Dhatman",
"id": "5b79921649262103f74b6585",
"avatar": null,
"status": "offline"
},
"platform": "pc",
"region": "en",
"creation_date": "2020-11-06T10:32:32.000 00:00",
"last_update": "2022-10-11T16:51:55.000 00:00",
"id": "5fa526406ff3660486ef556c"
},
{
"quantity": 1,
"visible": true,
"platinum": 5,
"order_type": "sell",
"user": {
"reputation": 4,
"region": "en",
"last_seen": "2022-11-18T18:31:49.199 00:00",
"ingame_name": "TheronGuardxx",
"avatar": "user/avatar/5e235e94ab7656047a86f70c.png?7b1e90d474a62c6ba3c2d3ef06aed927",
"id": "5e235e94ab7656047a86f70c",
"status": "offline"
},
"platform": "pc",
"region": "en",
"creation_date": "2020-12-17T22:46:57.000 00:00",
"last_update": "2022-10-15T23:37:01.000 00:00",
"id": "5fdbdfe13e8c4f017f5e3352"
}
]
}
}
如何在這個檔案中找到最少的鉑金數量?據我了解,我需要創建一個回圈遍歷整個檔案,如果當前的鉑金數量小于當前以 min 寫入的數量,則為變數 min 分配一個新值。
但是代碼應該是什么樣的呢?
目前,我已經撰寫了一個塊,用于從 JSON 檔案的最后一個元素中查找鉑金的數量、賣家的別名和商品數量。
num = 1
flagSell = 0
while flagSell == 0:
if r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["user"]['status'] == 'ingame':
if r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["region"] == 'en':
if r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["order_type"] == 'sell':
min = r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["platinum"]
author = r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["user"]["ingame_name"]
quantity = r_json["payload"]["orders"][len(r_json["payload"]["orders"]) - num]["quantity"]
flagSell = 1
else:
num = 1
else:
num = 1
else:
num = 1
uj5u.com熱心網友回復:
嘗試使用內置函式min()根據platinum鍵找到最小順序(data是問題中的字典):
min_order = min(data["payload"]["orders"], key=lambda o: o["platinum"])
print("Min Platinum =", min_order["platinum"])
print("Name =", min_order["user"]["ingame_name"])
print("Quantity =", min_order["quantity"])
印刷:
Min Platinum = 4
Name = Noxxat
Quantity = 1
編輯:如果你想搜索最小訂單,其中order_type == 'sell':
min_order = min(
(o for o in data["payload"]["orders"] if o["order_type"] == "sell"),
key=lambda o: o["platinum"],
)
print("Min Platinum =", min_order["platinum"])
print("Name =", min_order["user"]["ingame_name"])
print("Quantity =", min_order["quantity"])
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536583.html
