Sco*_*les 1 python sorting dictionary
我有一个Python字典d:
d = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
}
Run Code Online (Sandbox Code Playgroud)
我想这样排序:
x是第一位。因此,如果x = 'c'我希望输出为:
>>> print(new_d)
>>> { 'c': 3, 'a': 1, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)
是否有一种简单/轻松/ Pythonic的方法来做到这一点?是的,我已经看到并理解了有关这些问题的大量答案。如何按值对字典进行排序?以及如何按键对字典排序?
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]])
Run Code Online (Sandbox Code Playgroud)
输出:
[('c', 3), ('a', 1), ('b', 2), ('d', 4)]
Run Code Online (Sandbox Code Playgroud)
在Python 3.7中:
print(dict(new_d))
Run Code Online (Sandbox Code Playgroud)
输出:
{'c': 3, 'a': 1, 'b': 2, 'd': 4}
Run Code Online (Sandbox Code Playgroud)