1. 基础知识
(1) 字典(dictionary)是Python中另一个非常有用的内置数据类型。
(2) 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
(3) 字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key):值(value)的集合。
(4) 键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。
(5) 创建空字典:{}。
(6) 构造函数 dict() 可以直接从键值对序列中构建字典。
(7) 说白了,字典就是众多键值对的一个集合,类似C++中的map映射。
(8) 键值对格式:key:value,key是键,value是值,这样一个组合就是键值对。
(9) 字典格式:d = {key1 : value1, key2 : value2, key3 : value3 }。
(10) 成员资格运算符:key in dict,判断指定的key是否在字典dict中存在。
d = {'num': 101, 'name': 'Zhang'}
print('num' in d)
print('age' in d)

2. 创建字典的几种形式
(1) 使用{}字面形式直接创建
d = {'num': 101, 'name': 'Zhang'}
print(d)
(2) 使用[]形式进行创建
d = {} # 创建一个空字典
d['one']= 111 # 添加键值对
d[222]= "Me" # 添加键值对
print(d)

(3) 使用dict()函数进行创建
items = [("name", "Zhang"), ("age", "24")]
print(dict(items))
print(dict(name='Wang', age=25))

3. 字典值的访问
(1) 通过[]的形式来访问键所对应的值
d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
# 获取键num, name分别对应的值
print("d['num'] is: ", d['num'])
print("d['name'] is: ", d['name'])

(2) 注意,如果用字典里没有的键访问数据,则会发生报错
# 企图访问一个不存在的键所对应的值, 将发生报错
d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
print("d['xx'] is: ", d['xx'])

4. 字典值的修改
d = {'num': 101,}
print('修改前:> ', d, id(d))
d['num'] = 102
d['name'] = 'Zhang'
print('修改后:> ', d, id(d))

5. 字典值的删除
(1) 删除指定的键
Dict = {'num': 101, 'name': 'Zhang'}
print('删除前:> ', Dict, id(Dict))
del Dict['num'] # 删除键`num`
print('删除后:> ', Dict, id(Dict))

(2) 删除整个字典
Dict = {'num': 101, 'name': 'Zhang'}
print('删除前:> ', Dict, id(Dict))
del Dict # 删除整个字典
print('删除后:> ', Dict, id(Dict)) # 因为字典已被删除, 所以此处打印会报错

6. 字典的清空
清空,仅仅是将字典里的所有键值对给删除了,此时相当于是一个空的字典。
关键API:clear()。
Dict = {'num': 101, 'name': 'Zhang'}
print('清空前:> ', Dict, id(Dict))
Dict.clear() # 调用clear()函数
print('清空后:> ', Dict, id(Dict))
Dict['age'] = 18 # 往字典里追加一个键值对
print(Dict)

7. 字典的迭代
d = {'num': 101, 'name': 'Zhang', 'age': 24, 'hobby': 'eat'}
# (1)遍历key
for key in d:
print(key, 'to', d[key], end=" ,")
print("")
# (2)同时取得key-value
for key,value in d.items():
print(key, 'to', value, end=" ,")

8. 字典的其他一些特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
(1) 不允许同一个键出现两次,键在字典中具有唯一性。创建时如果同一个键被赋值两次,那么前一个值将被后一个值给覆盖。
Dict = {'num': 101, 'name': 'Zhang'}
# 给同一个键赋值两次, 则前面的值将被后面的值给覆盖
Dict['age'] = 18
Dict['age'] = 19
print(Dict)

(2) 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
Dict = {['Name']: "TaoBao", 'Age': 18}
print(Dict)

9. 内置函数&方法
(1) 内置函数
len(dict):计算字典的个数;
str(dict):输出字典,以字符串的形式表示;
Dict = {'num': 101, 'name': 'Zhang'}
print(str(Dict))
print(type(str(Dict)))

(2) 内置方法
dict.clear():清空整个字典(删除整个字典内的所有键值对)
dict.copy():返回一个字典的浅拷贝
dict.get(key, default=None):返回指定键所对应的值,如果不存在,就返回default设置的默认值
。。。。
更多内置方法参考 官网API。



















