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}
正如您所见,从技术上讲,它是同一本词典,但当您声明它时,它是无序的 这是一个很好的词典视频: