一.字典简介:
字典,是什么?是新华字典,牛津字典。不是的,这里的字典是Python里的一种数据类型。
字典是另一种可变容器模型,且可存储任意类型对象, 数据类型符号是:dict。 字典里面的元素都是变量,每对变量中变量名叫做“键”, 赋的值叫做“值”,所以每对变量叫做“键值”
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键值字典中就相当于元素在列表中一般的存在。但不同的是,每一个键值就等于在字典里声明了一个变量;并且字典中没有下标和切片。
二.字典的修改:
在字典中,每对键值可以修改
dict[key] = 新值
随便说一下,字典里面的键值对,只有值可以改,键是不能更改的
dict[key1] = 新值
要是key1在dict中不存在,会报错吗?不,要是python发现key1不存在。他会直接添加一个key1到字典中,所以这个公式是可以两用的。既可以改值,也可以添键值对。
键值对的添加还有一个关键字可以实现
关键字: dict.setdefault(key,value) 会在字典末尾加一个键值对.
三.字典的删除:
字典的删除分为删除键值对和删除整个字典,清空整个字典。】
关键字:
del, pop(删某个变量), clear(清空),popitem(将键值对从后往前删除并可以赋给另一个元组)
例子:
book = {'书名': '《三体》', '价格': 100, '作者': '刘慈欣', '出版社': '***出版社'}
# 清空
b.clear()
# 删除书名 POP:根据键来删除键值对
book.pop('书名')/del book('书名')
print(book)
# 删除整个字典
del book
print(book)
# 将键值从后往前对变成两个元素剪切给一个元组
r = book.popitem()
print(r)
print(book)
四.字典的遍历:
来了来了,重头戏来了,这块的东西很复杂的哟!
我们先讲一下单个键值对的获取方法,后面再讲分别获取所有键,所有值和同时获取所有键所有值的方法》
1.获取单对键值对的方法有两种,我都会说,再说说两种方法的区别:
dict.get(key): 根据key获取value值
dict[key]: 根据key获取value值
区别:
get.(key)里面的key不存在时,可以返回默认值None,并且这个默认值还可以自己设置。
dict.[key]里面的key不存在时,会报error错误。
这两种方法各有各有的好处:
第一种可以发挥的更灵活,即使错了也可以继续运行;第二种更快捷。
2.分别获取所有键,所有值:
只要获取所有的键或者值:
只要所有的键:dict.keys()
只要所有的值:dict.values()
为什么要把它们放在一起讲,其实不难看出它们的关键字都是用的键和值的复数形式。很好理解嘛,一个叫做key,所有的key肯定叫keys。值也是一样的。
例子:
book = {'书名': '《三体》', '价格': 100, '作者': '刘慈欣', '出版社': '***出版社'}
print(book.values()) # dict_values(['《三体》', 100, '刘慈欣', '***出版社'])
print(book.keys()) # dict_keys(['书名', '价格', '作者', '出版社'])
3.同时获取所有的键和值:
有人会说这样得到的结果,不就是字典本身吗?有所有的键和值。不不,要是那么简单,我也不会放在这里来说了。咱们接着看。
关键字:items
格式及功能:
dict.items() # 会把键值对一对一对的被分离出来,并且每对会成一个元组的两个元素。
例子:
book = {'书名': '《三体》', '价格': 100, '作者': '刘慈欣', '出版社': '***出版社'}
print(book.items())
# dict_items([('书名', '《三体》'), ('价格', 100), ('作者', '刘慈欣'), ('出版社', '***出版社')])--------》打印后的效果
说一下使用 for..in 遍历字典:
如果直接用for....in 遍历字典,只会取key。
如果想用for....in 遍历出字典的value,就的使用关键字 ‘values’。
使用for..in同时遍历book的所有键和所有值时的格式
for k,v in book.items():
print(k,v)