如何将最后一个键值对移动到第一个位置?
这是我想要的内容。
d = {1 : 'a', 2 : 'b', 3 : 'c'}
这是我想要的内容。
d = {3 : 'c', 1 : 'a', 2 : 'b'}
我不知道如何实现它。
d = {1 : 'a', 2 : 'b', 3 : 'c'}
d = {3 : 'c', 1 : 'a', 2 : 'b'}
我不知道如何实现它。
一种方法是:
d = {1: "a", 2: "b", 3: "c"}
print(dict([d.popitem()]) | d)
输出
{3: 'c', 1: 'a', 2: 'b'}
popitem()
函数返回字典中最后一个键值对的元组。将其放入列表中创建可迭代的键值对项目,然后可以在其上调用dict()
函数。此方法适用于版本3.9及以上。自版本3.7以来,字典的插入顺序得到保留。自版本3.9开始,字典支持联合...否则,位置参数必须是一个可迭代对象。可迭代中的每个项本身必须是一个包含两个对象的可迭代对象。每个条目的第一个对象成为新字典中的键,第二个对象成为相应的值。
|
运算符。{**dict([d.popitem()]), **d}
对于 Python <3.9 的版本。 - Michael Szczesny.update()
方法也可以起作用。 - S.B对于系统性的方法,在 dict
很大的情况下,您可以使用一个包含旧键-新键列表的映射器,然后使用字典推导式获取具有新顺序的字典。
d = {1 : 'a', 2 : 'b', 3 : 'c'}
mapper = [(1, 3), (2, 1), (3, 2)]
new_d = {k_new: d[k_new] for _, k_new in mapper}
仅当你使用保持插入顺序的Python版本(Python 3.7及更高版本)时,它才有效,但你可以尝试:
d = {1 : 'a', 2 : 'b', 3 : 'c'}
# last key
last_k = next(reversed(d))
# put the last key-value pair before the rest
d = {last_k: d.pop(last_k), **d}
d
# {3: 'c', 1: 'a', 2: 'b'}
OrderedDict
,它只保留插入顺序,否则在 Python 中字典条目没有隐含的顺序。如果你关心这一点,就使用列表代替。 - TheDude