0

由于dict对象在 Python 3.7+ ( https://docs.python.org/3/whatsnew/3.7.html ) 中具有本机键顺序,因此应该有一种管理顺序的方法。是否有官方文档可供我阅读?

在我的特殊情况下,我想在不创建新字典的情况下解决此类问题。

  1. 在开头添加一个新的键值对。
  2. 按键对字典中的记录进行排序。

对于第一个:

dct = {'b': 5, 'c': 6}
dct['a'] = 4  # What should be here
print(dct)  # I want it to be {'a': 4, 'b': 5, 'c': 6}

对于第二个:

dct = {'b': 5, 'c': 6, 'a': 4}
dct.sort_somehow('...')  # What should be here
print(dct)  # I want it to be {'a': 4, 'b': 5, 'c': 6}
4

1 回答 1

2

如果您必须就地改变字典,可以使用.clear()清除它,然后.update放入新值。

>>> dct = {'b': 5, 'c': 6, 'a': 4}
>>> sorted_key_values = sorted(dct.items())
>>> dct.clear()
>>> dct.update(sorted_key_values)
>>> dct
{'a': 4, 'b': 5, 'c': 6}

请注意,这仍然消耗与字典中键/值数量成比例的内存量。就地排序非常困难或不可能(因为不使用任何额外的内存),请参阅python - 就地排序字典 - 堆栈内存溢出

于 2021-02-03T14:09:45.993 回答