在python中的字典与我在开始时设置的顺序

use*_*618 11 python collections dictionary

我在做字典:

d = {"server":"mpilgrim", "database":"master"}
d['mynewkey'] = 'mynewvalue'
Run Code Online (Sandbox Code Playgroud)

但当我显示它时,我看到这个字典是颠倒的.

print(d)

{'mynewkey': 'mynewvalue', 'database': 'master', 'server': 'mpilgrim'}
Run Code Online (Sandbox Code Playgroud)

如何扭转它?

或者,如果字典不是可排序的,那么我必须使用哪个字符集来处理该信息的顺序很重要?

Aph*_*hex 19

from collections import OrderedDict

d = OrderedDict()
d["server"] = "mpilgrim"
d["database"] = "master"
d['mynewkey'] = 'mynewvalue'

print(d)

OrderedDict([('server', 'mpilgrim'), ('database', 'master'), ('mynewkey', 'mynewvalue')])
Run Code Online (Sandbox Code Playgroud)


小智 18

字典是无序的(顺序是确定性的,但取决于你甚至没有想到也不应该关心的一些因素 - 密钥的哈希,插入的顺序,冲突等).在Python 2.7+中,使用collections.OrderedDict.如果您必须使用旧版本,谷歌可以指向您的各种实现.


and*_*oot 5

如果您使用的是python 3.6,字典现在按插入顺序排序

https://www.python.org/dev/peps/pep-0468/

否则(正如其他人所说的),我会推荐collections.OrderedDict