1.字典 — dict
1.什么是字典
1.字典是一个可变容器,可以存储任意类型的数据
2.字典中的每个元素都是通过“键”进行索引的
3.字典中的元素是无序的
4.字典是通过键(key)值(value)对形式存储的
5.字典的键是不能重复的,而且只能用不可变类型数据作为键
2.创建字典的方式
1.使用字面值
1.d = {}
2.d = {"name":"zf","age":85}
3.d = {"姓名":"张三丰","年龄":85}
4.d = {1:[1,2,3],'abc':[4,5,6]}
5.d = {
'person1':{
'name':'zhangsandeng',
'age':'85'
},
'person2':{
'name':'zhangwuji',
'age':18
}
}
2.使用构造函数 -dict
1.d = dict()
生成一个空字典,等同于{}
2.d = dict(iterable)
iterable:可迭代对象
d = dict([('name','zhangsandeng'),['age',15]])
3.d = dict(**kwargs)
**kwargs:表示用关键字传参来表示一个字典
示例:
d = dict(name = 'zhangsandeng',age=18)
等同于
d = {
'name':'zhangsandeng',
'age':18
}
3.字典的键必须是不可变类型
bool int float complex str tuple frozenset bytes
4.字典的值可以是任意数据类型
5.可变的数据类型
list dict set(集合) bytearray(字节数组)
3.字典的基本操作:
字典的键索引:
用[]运算符获取字典内key对应的值
也可以使用[]来修改key对应的值
示例:
d = {
'name':'tarena',
'age':15
}
d['data'] = '2019-02-17' #向字典增加数据
d['name'] #获取vaule
d['name'] = 'tarena' #修改name键的值为tarena
del d['name'] #删除name键对应的值
4.字典的成员运算符 -in和 not in
in:判断key是否在字典中
not in:与in相反
5.字典的迭代访问
d = {
'name':'tarena',
'age' : 15,
'data':'2019-02-17'
}
1.迭代d中的所有键
for key in d.keys():
2.迭代d中的所有值
for value in d.values():
3.迭代d中所有的键值
for k,y in d.items():
4.迭代d中所有的键
使用迭代变量去字典中直接遍历,默认遍历就是键
for key in d:
#效果和第一点一样
6.可以用于字典的内建函数
len(d):返回字典中键值对的个数
max(d):返回字典中键的最大值
min(d):返回字典中键的最小值
sum(d):返回字典中所有键的和
any(d):只有字典中任意一个键为True,则返回True
all(d):字典中所有键都为True,才返回True
7.字典推导式:
1.什么是字典推导式
字典推导式是用可迭代对象创建字典的表达式。
2.语法:
{键表达式:值表达式 for 变量 in 可迭代对象 if 条件}
说明:if条件是可以省略的,如果不省略的话,且条件为假则不生成表达式
示例:
示例:键为数字(10以内),值为键的平方
d = {x:x**2 for x in range(10) }
d = {x:x**2 for x in range(10) if x %2 == 0 }
8.字典 VS 列表
1.字典和列表都是可变对象 —— 相同点
2.索引方式不同,列表用数字做索引,字典使用键做索引 —— 不同点
3.字典的插入,删除,修改操作的速度要快于列表,列表倾向于存储数据,字典倾向于经常读取更新 —— 不同点
4.列表的存储是有序的,字典的存储是无序的 —— 不同点
练习:从终端上输入多个学生姓名,年龄,成绩,将每个学员的信息存入字典中,然后再放入列表中。每个学员的信息都是手动输入,输入姓名为空时结束
存储格式:[
{'name':'zhangsand','age':18,'score':10}
]
输出格式如下:
+----------+--------+-----------+
| name | age | score |
+----------+--------+-----------+
| zhang | 85 | 100 |
| wang | 88 | 000 |
+----------+--------+-----------+
l = []
d = {}
while 1:
name = input("please input name:\n>>>")
if not name:
break
age = input("please input age:\n>>>")
scroe = input("please input scroe:\n>>>")
d['name'] = name
d['age'] = age
d['scroe'] = scroe
l.append(d)
head = """
+--------------+---------+---------+
| name | age | scroe |
+--------------+---------+---------+
"""
print(head)
for di in l:
n = di['name'].center(14)
a = str(di['age'].center(9))
c = str(di['scroe'].center(9))
mas = "|%s|%s|%s|"%(n,a,c)
print(mas)
over = """
+--------------+---------+---------+
"""
print(over)