字典 1、可变类型与不可变类型 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型。 判断方法: 麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。 便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。 数值、字符和元组 都能被哈希,因此它们是不可变类型。 列表、集合、字典不能被哈希,因此它是可变类型。 2、字典的定义 字典是无序的键:值(key:value)对集合,键必须是互不相同的(在同一个字典之内)。 字典 定义语法为 {元素1, 元素2, …, 元素n} 3、创建和访问字典 dic1 = { 1: 'one', 2: 'two', 3: 'three'} print(dic1) # {1: 'one', 2: 'two', 3: 'three'} print(dic1[1]) # one print(dic1[4]) # KeyError: 4 注意:如果我们取的键在字典中不存在,会直接报错KeyError。 通过构造函数dict来创建字典。 dic = dict() dic['a'] = 1 dic['b'] = 2 dic['c'] = 3 print(dic) # {'a': 1, 'b': 2, 'c': 3} 4. 字典的内置方法 dict.fromkeys(seq[, value]) 用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。 seq = ('name', 'age', 'sex') dic1 = dict.fromkeys(seq) print(dic1) # {'name': None, 'age': None, 'sex': None} dict.keys()返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键。 dic = { 'Name': 'lsgogroup', 'Age': 7} print(dic.keys()) # dict_keys(['Name', 'Age']) lst = list(dic.keys()) # 转换为列表 print(lst) # ['Name', 'Age']