我有一個 Python 字典d:d = { 'a': 1, 'b': 2, 'c': 3, 'd': 4,}我想這樣排序:有值的鍵x是第一位的。其他所有內容均按字母順序排序。所以如果x = 'c'我希望輸出是:>>> print(new_d)>>> { 'c': 3, 'a': 1, 'b': 2, 'd': 4}有沒有一種直接/簡單/Pythonic的方法來做到這一點?是的,我已經看到并理解了如何按值對字典進行排序的問題的大量答案?以及如何按鍵對字典進行排序?
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
Python 3.7 之前的字典未排序,但是,您可以對從 中獲得的元組列表進行排序dict.items,如果您使用的是 Python 3.7,請dict根據結果創建一個。該lambda排序鍵返回具有兩個元素的列表。第一個元素是鍵比較的結果,在本例中為x == 'c',而第二個元素是與鍵關聯的數值:
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
x = 'c'
new_d = sorted(d.items(), key=lambda c:[c[0] != x, c[-1]])
輸出:
[('c', 3), ('a', 1), ('b', 2), ('d', 4)]
在 Python 3.7 中:
print(dict(new_d))
輸出:
{'c': 3, 'a': 1, 'b': 2, 'd': 4}
添加回答
舉報
0/150
提交
取消