注意:
(1)有序的数据类型都有下标,可通过下标访问,如字符串、列表、元组可以,字典就不行
(2)列表可修改,元组不可修改,但元组中的可变元素能修改,如元组中的列表,我们可通过元组索引定位到该列表并修改列表元素。
(3)可变元素不能做字典的键,如列表不能为键,因为列表可修改啊
(4)字典本身无序,转换为其他的数据类型也是是无序的,这次转换的是这种顺序,下一次转换可能就是另一种顺序了
(5)字典能够让信息关联,但不记录键值对添加顺序。要创建字典并记录添加顺序可用模块collections中的OrderDict类。OrderDict实例的行为几乎与字典相同,区别“只”在于记录了键值对的添加顺序。
OrderDict类兼具列表和字典的主要优点(在将信息关联起来时保留原来的顺序)
from collections import OrderedDict
# OrderedDict() 返回一个空的有序字典,谁先进来谁在前面,且先打印
favorite_languages = OrderedDict()
# 为了醒目用汉字了
favorite_languages['黎明'] = 'python'
favorite_languages['周星驰'] = 'c'
favorite_languages['紫霞'] = 'Java'
favorite_languages['我'] = 'python'
for name, language in favorite_languages.items():
print(name + "'s favorite language is " + language.title() + '.')
结果为:
#这两句的输出有点不一样: OrderedDict 与 odict_items
print(favorite_languages)
print(favorite_languages.items())
输出:
OrderedDict([('黎明', 'python'), ('周星驰', 'c'), ('紫霞', 'Java'), ('我', 'python')])
odict_items([('黎明', 'python'), ('周星驰', 'c'), ('紫霞', 'Java'), ('我', 'python')])
最重要的是,内元素虽然打印出来是元组,并不影响原字典修改,因为这些元组是根据修改后的字典打出来的,我们修改字典就好了,我们又不是直接修改这些元组