前言
基础不牢的话是要吃大亏的,好在能及时的发现,首先我们需要判断字典是无序还是有序的,很显然字典跟列表元组不同,他是无序的数据结构,但是这个问题我竟然不知道,因为最开始学习python的时候是在windows上学的,我也在windows跟mac电脑上检验过,在window上字典确实是保持有序,但是在linux上字典确实符合python数据结构的定义是无序的。下面我们就来验证字典是否有序。
字典是否有序
测试代码
def test_dict():
test_dict = {}
test_dict['这是第1个key'] = "这是第1个value"
test_dict['这是第2个key'] = "这是第2个value"
test_dict['这是第3个key'] = "这是第3个value"
print(test_dict)
def main():
test_dict()
if __name__ == "__main__":
main()
windows环境下测试
结果如下:
windows下确实保证了有序
linux环境下测试
结果如下:
linux下字典的顺序确实是无序的
如何把字典变为有序字典呢
有几种方法,这里列出我认为最简单的方法
def test_dict():
test_dict = collections.OrderedDict()
test_dict['这是第1个key'] = "这是第1个value"
test_dict['这是第2个key'] = "这是第2个value"
test_dict['这是第3个key'] = "这是第3个value"
print(test_dict)
就是声明的时候通过collections类里声明
后记
写这篇文章的时候我还认为是系统的原因,直到一位同学指正下。可能不是系统的问题,python3.7以后字典就为有序的了。也就是说如果使用的是python3.7及以后的版本,无需再重新定义有无序了。