Bootstrap

Python字典结构

属于可变对象的

字典结构是由若干个键值对组成的一组序列

  • 键我们可以理解为列表当中的角标,列表中的角标是整数用于给数据进行编号的,键可以是任意一个不可变对象的数据,相当于是的引用,例如:单词:解释,所以键是不能重复的!

  • 值可以是任意的数据对象,值是可以允许重复的

键和值的对应关系是 要么一对一 要么多对一 但不能一对多

所以所有的键 是一个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])

;