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

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

使用 python 向 API 發出請求會在樹莓派上給出不正確的輸出

使用 python 向 API 發出請求會在樹莓派上給出不正確的輸出

慕容708150 2022-09-13 10:14:59
所以我一直在創建一個python代碼,該代碼調用API以獲取其JSON代碼。使用此代碼請求 API 后:url = requests.get("https://stats.foldingathome.org/api/donor/PointofHorizon")然后,我將給定的 JSON 信息打印到控制臺中以獲取此輸出:{"wus": 131, "rank": 99964, "total_users": 2236318, "active_50": 2, "path": "donor/PointofHorizon", "wus_cert": "https://apps.foldingathome.org/awards?user=35025837&type=wus", "id": 35025837, "credit_cert": "https://apps.foldingathome.org/awards?user=35025837&type=score", "last": "2020-03-22 15:18:54", "name": "PointofHorizon", "teams": [{"wus": 97, "last": "2020-03-22 15:18:54", "uid": 35025837, "active_50": 2, "active_7": 2, "credit": 310435, "team": 225605, "name": "PC Master Race - PCMR"}, {"wus": 34, "last": "2019-08-17 13:00:11", "uid": 35025837, "active_50": 0, "active_7": 0, "credit": 431809, "team": 223518, "name": "LinusTechTips_Team"}], "active_7": 2, "credit": 742244}這可以完美地在Windows機器上運行python代碼,但是如果我在樹莓派上運行這個確切的python代碼,我會得到JSON,但它會完全隨機化。請注意,窗口和 Pi 都運行完全相同的代碼,而窗口給我的輸出是我想要的,只是 pi 不是。任何人都可以解釋為什么與窗口相比,我在Pi上獲得隨機輸出?以下是python代碼在Windows和Pi上運行3次的一些屏幕截圖,因此您可以理解我所說的隨機含義。但基本上,它從 pi 上的 API 獲取信息,而不是以 API 頁面上的正確順序顯示 JSON 文件:視窗: 編輯: 蟒蛇版本為這個視窗是蟒蛇 3.8.2
查看完整描述

2 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

這是預期的行為:JSON 標準指出:

對象是一組無序的名稱/值對。

因此,生成的 JSON 沒有“正確”或“不正確”的順序。

至于順序在Windows上不會改變,但在樹莓派上會改變,那是因為你運行不同版本的Python。從Python 3.7開始,字典現在是有序的,并保留了插入的順序。

如果需要一致的結果,請在兩臺計算機上運行相同版本的 python。您也可以考慮使用 OrderDict,或者對生成的字典進行排序(使用 ),如果順序對您來說確實很重要。sorted(json_response)


查看完整回答
反對 回復 2022-09-13
?
慕勒3428872

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

我相信你正在觀察到,在 中,沒有關于字典中鍵順序的保證。您的 API 返回的 JSON 字符串可能是相同的(畢竟,它來自同一服務器)。但是,當將其轉換為字典時,它不遵循鍵的順序。python3.5python

如果要保留此信息,請考慮升級到 python3.7+,其中字典順序現在是確定性的(請參閱發行說明 )


查看完整回答
反對 回復 2022-09-13
  • 2 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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