我有Counter
在Python 3.3.x
我想排序。
我知道我可以使用.most_common(x)
,但我希望在相同的值的情況下按鍵的字母順序排序。
有沒有一種方法可以做到這一點?設置這種'領帶破壞者'?排序計數器集合在python中學期(聯繫斷路器)
9
A
回答
13
collections.Counter
實際上是一個字典,他們依靠散列技術,所以我們實在無法按順序訪問它們。由於無法按順序訪問,因此對字典進行排序是不成問題的。但是你可以將它轉換爲對應於鍵和值的元組列表,然後對其進行排序。例如,
print(Counter('abracadabra').most_common())
# [('a', 5), ('r', 2), ('b', 2), ('c', 1), ('d', 1)]
print(sorted(Counter('abracadabra').most_common(), key=lambda x: (-x[1], x[0])))
# [('a', 5), ('b', 2), ('r', 2), ('c', 1), ('d', 1)]
我們做sorted
排序most_common
給出的(key, value)
數據。我們要確保物品必須按value
遞減排序,並按key
遞增排序。所以,我們在這裏使用一個小技巧。 sorted
將調用我們通過的函數作爲key
參數的值,用於序列中要排序的每個元素。該函數返回的值將用於在與其他元素進行比較時表示該特定元素。在我們的例子中,key
功能是這樣的
lambda x: (-x[1], x[0])
這裏,x
將得到所有元素最終和它交換第一和第二元素的位置和否定實際計數的一部分。因爲,默認情況下,sorted
按升序對數據進行排序,所以我們使最大的數字最小,反之亦然。例如,
[2, 3, 1]
如果你想他們升序排列,該sorted
將保持在開始時最小的元素,並在第二位置的下一個最小等等,直到它達到最大的元素。在我們的案例中,它變成了[1, 2, 3]
。要按降序排列元素,我們使它們的否定值代表實際的數字。
sorted([2, 3, 1], key=lambda x: -x)
現在,當sorted
精選2
,它調用key
函數來獲取要使用的值,它會返回-2
並以同樣的方式,1
將-1
,3
將-3
。它將在開始時放置最小的元素。由於我們得到了-3
3,因此我們會在開始時輸入3,2
將會在它旁邊,1會在它之後。所以結果變成[3, 2, 1]
。
我們應用相同的技術,根據元素中的兩個項目進行排序。我們首先根據計數值進行降序排序,如果它們匹配基於鍵的排序,則升序。
相關問題
- 1. 在Python中限制計數器集合
- 2. Python的排序計數器
- 3. 合併排序比較計數器
- 4. 性能計數器集合
- 5. 排序Laravel收集關係計數
- 6. 計數器在python集合包中使用的算法?
- 7. 按頻率排序計數器,然後在Python中按字母順序排序
- 8. 如何在python中添加合併排序的比較計數器?
- 9. 按順序中斷分組排序的數字集合
- 10. 在Python中按年份排序計數器
- 11. 在左+右聯合聯接表中排序按日期
- 12. 排序比較計數器
- 13. Python矢量計算器(數學導入)
- 14. python中的機器學習外部數據集學習
- 15. 如何排序計數器按字母順序然後在Python
- 16. 麻煩從集合中導入計數器python 2.73
- 17. 在Java中排序集合
- 18. 根據字段關聯排序集合
- 19. Python 3中的日期計數器
- 20. ActiveAdmin:排序關聯計數
- 21. 設計器序列化和集合
- 22. 在學說中更新總關係計數器
- 23. 計算python集合中的值的平均值。計算器
- 24. 斷路器應用程序
- 25. 在排序方法中計數掉期
- 26. 學說:排序按計數對相關聯的實體
- 27. 在Python中排序日期
- 28. Python初學者,一個簡單的計算器程序的數學函數
- 29. Ruby數學計算器程序
- 30. 在Python中合併排序