Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两次反转字典时得到的结果不一样_Python_Dictionary - Fatal编程技术网

Python 两次反转字典时得到的结果不一样

Python 两次反转字典时得到的结果不一样,python,dictionary,Python,Dictionary,我正在尝试将一个简单的字典倒置,如: {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4} 我正在使用这个函数: def invert(d): return dict([(x,y) for y,x in d.iteritems()]) 现在当我翻字典的时候,一切都很顺利。但是,当我将其反转两次时,我得到: {'a': 1, 'c': 3, 'b': 2, 'd': 4} 这和我开始使用的字典的顺序不一样。我的反转函数有问题吗?抱歉,我对python有点陌生,但谢

我正在尝试将一个简单的字典倒置,如:

{'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
我正在使用这个函数:

def invert(d):
    return dict([(x,y) for y,x in d.iteritems()])
现在当我翻字典的时候,一切都很顺利。但是,当我将其反转两次时,我得到:

{'a': 1, 'c': 3, 'b': 2, 'd': 4}

这和我开始使用的字典的顺序不一样。我的反转函数有问题吗?抱歉,我对python有点陌生,但谢谢您的帮助

没错,python中的字典是无序的

答复如下:

CPython实现详细信息:键和值列在 非随机的任意顺序在Python中有所不同 实现,并取决于字典的插入历史 和删除

从:

最好将字典视为一组无序的键:值 配对,要求密钥是唯一的(在一个 字典)。一对大括号创建一个空字典:{}。放置 大括号内以逗号分隔的键:值对列表添加 初始键:字典的值对;也是这样 字典是在输出上编写的


Python字典是不按设计排序的

如果确实需要此行为,您可以使用集合。OrderedDict。

尝试运行此代码:

d = {
    'a' : 1, 'b' : 2, 
    'c' : 3, 'd' : 4
}

def invert(d):
    return dict([(x,y) for y,x in d.iteritems()])

print d

d = invert(d)

print d

d = invert(d)

print d
这是输出:

{'a': 1, 'c': 3, 'b': 2, 'd': 4} {1: 'a', 2: 'b', 3: 'c', 4: 'd'} {'a': 1, 'c': 3, 'b': 2, 'd': 4} {'a':1,'c':3,'b':2,'d':4} {1:a',2:b',3:c',4:d'} {'a':1,'c':3,'b':2,'d':4}
正如您所见,从技术上讲,它是同一本词典,但当您声明它时,它是无序的

这是一个很好的词典视频: