区别:有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。
简单说,就是for循环下获取的kv是否按一定顺序获得
# 普通字典
dic01 = {'name':'Tom','age':12,'gender':'male'}
print('dic01:',dic01)
'''
由于字典无序,每次字典k:v的顺序也随机
第一次打印:{'name': 'Tom', 'gender': 'male', 'age': 12}
第二次打印:{'gender': 'male', 'name': 'Tom', 'age': 12}
第三次打印:{'name': 'Tom', 'gender': 'male', 'age': 12}
'''
for k,v in dic01.items():
print(k,v) # 迭代顺序随机
'''
gender male
name Tom
age 12
'''
如上,获取的kv,每次都是不同的排列顺序
# 3.1 有序插入
dic03 = OrderedDict()
dic03['a'] = 'A'
dic03['b'] = 'B'
dic03['c'] = 'C'
print('dic03:',dic03) # dic03: OrderedDict([('a', 'A'), ('b', 'B'), ('c', 'C')])
for k,v in dic03.items():
print(k,v)
'''
a A
b B
c C
'''
如上,通过for循环迭代取出,是按照其插入顺序,顺序取出的
注:之前看到一些博客说是有序字典不支持提前定义,但是实测,发现是可以提前定义的,效果如下
# 3.2 提前定义好字典
dic02 = OrderedDict(
[
('name','Jack'),
('age',14),
('gender','male')
]
)
print('dic02:',dic02) # OrderedDict([('name', 'Jack'), ('age', 14), ('gender', 'male')])
print(dic02['gender']) # male
for k,v in dic02.items():
print(k,v)
'''
name Jack
age 14
gender male
'''
如上,通过for循环取出来的kv也是按照其提前定义的顺序取出来的