属于可变对象的
字典结构是由若干个键值对
组成的一组序列
-
键我们可以理解为列表当中的角标,列表中的角标是整数用于给数据进行编号的,键可以是任意一个
不可变对象
的数据,相当于是值
的引用,例如:单词:解释
,所以键是不能重复的! -
值可以是任意的数据对象,值是可以允许重复的
键和值的对应关系是 要么一对一 要么多对一 但不能一对多
所以所有的键 是一个Set集合;所有的值 是一个list列表
在去创建字典时候,键值对用:
分开,键值对之间用,
分开,字典是{}
>>> dic = {}
>>> type(dic)
<class 'dict'>
>>> dic = {"名字":"张三" , "年龄":18 }
>>> dic
{'名字': '张三', '年龄': 18}
>>> len(dic)
2
>>> dic["名字"]
'张三'
>>> dic["年龄"]
18
增加和修改
>>> dic
{'名字': '张三', '年龄': 18}
>>> dic["性别"] = "男" # 如果键不存在 则为添加
>>> dic
{'名字': '张三', '年龄': 18, '性别': '男'}
>>> dic["性别"] = "女" # 如果键存在 则为修改
>>> dic
{'名字': '张三', '年龄': 18, '性别': '女'}
删除相关
>>> dic
{'名字': '张三', '年龄': 18, '性别': '女'}
>>> dic
{'名字': '张三', '年龄': 18, '性别': '女'}
>>> del dic["性别"] # 直接删除
>>> dic
{'名字': '张三', '年龄': 18}
>>> dic.pop("年龄") # 删除指定的键 并返回原先对应的值
18
>>> dic
{'名字': '张三'}
>>> dic.clear()
>>> dic
{}
字典的其他内置函数
字典有别于序列,没角标-没切片,不能+连接,不能*重复
# 有成员存在性检测 查键但不查值
>>> dic = {"姓名":"张安","年龄":18}
>>> "姓名" in dic
True
>>> 18 in dic
False
可以迭代,但是迭代的是键值对中的键
>>> for i in dic:
... print(i)
...
姓名
年龄
copy()复制一个字典
>>> dic2 = dic.copy()
>>> dic2
{'姓名': '张安', '年龄': 18}
>>> dic2["年龄"] = 20
>>> dic2
{'姓名': '张安', '年龄': 20}
>>> dic
{'姓名': '张安', '年龄': 18}
>>> dic = {'姓名': '张安', '年龄': 18, '分数': [1, 2, 3, 4]}
>>> dic2 = dic.copy()
>>> dic["分数"][0] = 100
>>> dic
{'姓名': '张安', '年龄': 18, '分数': [100, 2, 3, 4]}
>>> dic2
{'姓名': '张安', '年龄': 18, '分数': [100, 2, 3, 4]}
>>> dic["年龄"] = 20
>>> dic
{'姓名': '张安', '年龄': 20, '分数': [100, 2, 3, 4]}
>>> dic2
{'姓名': '张安', '年龄': 18, '分数': [100, 2, 3, 4]}
# 复制的时候 虽然创建除了新的字典对象 但是新的字典对象中 所有的值还是原先字典中那些数据对象的地址,那对于不可对象的值而言,如果修改则另存新对象的地址,对于可变对象的值而言,修改其中的内容,那么两者字典都会得到更新(相同的结果),除非给予一个新的可对象
>>> dic["分数"] = [6,6,6]
>>> dic
{'姓名': '张安', '年龄': 20, '分数': [6, 6, 6]}
>>> dic2
{'姓名': '张安', '年龄': 18, '分数': [100, 2, 3, 4]}
>>> dic["分数"][0] = 666
>>> dic
{'姓名': '张安', '年龄': 20, '分数': [666, 6, 6]}
>>> dic2
{'姓名': '张安', '年龄': 18, '分数': [100, 2, 3, 4]}
get(key):通过key获取对应的键
>>> dic.get("姓名")
'张安'
>>> dic["姓名"]
'张安'
pop(key):删除指定的键值对
keys():获取所有键的集合
values():获取所有值的列表
items():获取所有键值对的集合
>>> for key in dic:
... print(key)
...
姓名
年龄
分数
>>> for key in dic.keys():
... print(key)
...
姓名
年龄
分数
>>> for value in dic.values():
... print(value)
...
张安
20
[666, 6, 6]
>>> for item in dic.items():
... print(item)
...
('姓名', '张安')
('年龄', 20)
('分数', [666, 6, 6])