chars = dict(sorted(crops.items(),key=lambda kv: kv[1].size, reverse=True)[:4])
我正在創建一個字典 chars,它將計數變數(任何整數 vals)映射到我之前字典中的四個最大作物值,crop。
我在 Google Colab 和 Pycharms 中都運行了上面的行,它給了我不同的字典。在 Colab 中,它給了我我想要的東西,從下面看到的串列中(注意:從串列中洗掉了很多行)。它保留串列的順序{ (6, crop1), (7,crop2) , (2, crop3) , (3, crop4) }。
然而,在 pycharms 中,輸出是{ (2, crop3) , (3, crop4), (6, crop1), (7,crop2)},它仍然獲得最大的四種作物,但通過將其轉換為dict()它似乎通過計數變數重新排序我在字典中的串列。
字串列:
[(6, array([[78, 76, 77, 78, 73, 81, 80, 81, 79, 72, 77, 78, 71, 73, 78, 81,
82, 79, 76, 74, 75, 85, 86, 78, 76, 84, 85, 80, 78, 73, 76],
..., (7, array([[89, 90, 87, 83, 82, 83, 77, 76, 75, 74, 71, 73, 74, 77, 77, 80,
77, 75..., (3, array([[ 79, 77, 81, 74, 80, 85, 83, 79, 74, 77, 74, 76, 78,
...]
我不確定是什么原因造成的,肯定可以使用一些幫助。也許 PyCharms 也有問題,代碼在 Gazebo 模擬中實時運行,所以這可能會改變dict()我的串列的投射方式?
uj5u.com熱心網友回復:
字典是一種繼承無序的資料結構 - 句點。
python (*) 中的字典是插入排序的 - 放入其中的第一個專案也是第一個列印的專案。
(*) 適用于 python 3.7 及更高版本 - 低于 3.7 的 dict 可以隨機排序或(實作細節)也可以插入排序。
如果你得到不同的排序,你要么以不同的順序插入,要么運行截然不同的 python 版本。
如何在運行時檢測 Python 版本?
如果您使用較早版本的 python >= 3.1,您可以使用collections.ordereddict
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/392951.html
標籤:Python 字典 pycharm 谷歌合作实验室 凉亭
上一篇:如何從Prometheus服務器獲取按特定標簽過濾的所有指標名稱
下一篇:如何在R中的地圖上顯示一些點
