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。