文章目录
字典
字典是“键值对”的无序可变序列。
字典的创建
- {}、dict()来创建字典对象
>>> a = {"name":"Man"}
>>> a
{'name': 'Man'}
- zip()创建字典对象
>>> k = ["a","b","c"]
>>> v = [100,200,300]
>>> d = dict(zip(v,k))
>>> d
{100: 'a', 200: 'b', 300: 'c'}
- fromkeys创建值为空的字典
>>> a = dict.fromkeys(['name','age','job'])
>>> a
{'name': None, 'age': None, 'job': None}
字典元素的访问
- 通过键获得值。若不存在,则抛出异常。
>>> a = {"name":"Man","age":10,"job":"student"}
>>> a["name"]
'Man'
- get()方法获得值。推荐使用。优点:键不存在,返回None。
>>> a = {"name":"Man","age":10,"job":"student"}
>>> a.get("name")
'Man'
>>> a.get("sdfs")
>>> print(a.get("sdfs"))
None
>>> a.get("sdfs","不存在")
'不存在'
- 列出所有键值对
>>> a.items()
dict_items([('name', 'Man'), ('age', 10), ('job', 'student')])
- 列出所有的键,列出所有的值
>>> a.keys()
dict_keys(['name', 'age', 'job'])
>>> a.values()
dict_values(['Man', 10, 'student'])
- len()键值对的个数
>>> len(a)
3
- 检测一个键是否在字典中
>>> "name" in a
True
字典元素添加、修改、删除
- 给字典新增键值对,如果键已存在,则覆盖旧的键值对,如果键不存在,则新增键值对。
>>> a = {"name":"Man","age":10,"job":"student"}
>>> a["age"]="12"
>>> a
{'name': 'Man', 'age': '12', 'job': 'student'}
- update()将薪资点钟所有键值对全部添加到九字典对象上。如果key有重复,则直接覆盖。
>>> a = {"name":"Man","age":10,"job":"student"}
>>> b = {"money":100,"name":"Man"}
>>> a.update(b)
>>> a
{'name': 'Man', 'age': 10, 'job': 'student', 'money': 100}
- 删除可以使用del()方法;或者clear()删除所有键值对;pop()删除指定键值对,并返回对应的值对象。
>>> a
{'name': 'Man', 'job': 'student', 'money': 100}
>>> b = a.pop("name")
>>> b
'Man'
>>> a
{'job': 'student', 'money': 100}
>>> a.clear()
>>> a
{}
- popitem():随机删除和返回该键值对。若想一个一个移除并处理项,则有效。
>>> a = {"name":"Man","age":10,"job":"student"}
>>> a.popitem()
('job', 'student')
>>> a
{'name': 'Man', 'age': 10}
>>> a.popitem()
('age', 10)
>>> a
{'name': 'Man'}
序列解包
序列解包可以用于元组、列表、字典。方便对多个变量赋值。
序列解包用于字典时,默认是对“键”进行操作。
>>> x,y,z = 20,30,10
>>> x
20
>>> (a,b,c)=(10,20,30)
>>> a
10
>>> a = {"name":"Man","age":10,"job":"student"}
>>> b,c,d = a
>>> b
'name'
>>> e,f,g = a.values()
>>> e
'Man'
>>> f
10
表格数据使用字典和列表存储,并实现访问
r1 = {"name":"高小一","age":18,"salary":30000,"city":"北京"}
r2 = {"name":"高小二","age":19,"salary":20000,"city":"上海"}
r3 = {"name":"高小五","age":20,"salary":10000,"city":"深圳"}
tb = [r1,r2,r3]
print(tb[1].get("salary"))
for i in range(len(tb)):
print(tb[i].get("salary"))
20000
30000
20000
10000
字典核心底层原理
字典对象的核心是散列表。
将一个键值对放进字典的底层过程
用法总结
集合
集合是无序可变,元素不能重复。集合的所有元素都是字典中的键对象,因此是不能重复且唯一的。
集合创建和删除
- 使用()创建集合对象,并使用add()方法添加元素
>>> a = {3,5,7}
>>> a
{3, 5, 7}
>>> a.add(9)
>>> a
{9, 3, 5, 7}
- 使用set()将列表、元组等可迭代对象转成集合。如果原来数据存在重复数据,则保留一个。
>>> a = {3,5,7,3}
>>> b = set(a)
>>> b
{3, 5, 7}
- remove()删除指定元素;clear清空整个集合。
>>> a = {3,5,7,3}
>>> a.remove(3)
>>> a
{5, 7}
集合相关操作
Python对集合提供了并集、交集、差集等运算。
并集 a|b
交集 a&b
差集 a-b a.difference(b)
并集 a.union(b)
交集 a.intersection(b)
控制语句
选择结构
通过判断条件是否成立,来决定执行哪个分支。
单分支选择结构
if 条件表达式:
语句/语句块
a = 3
if a<10:
print(a)
3
条件表达式详解
条件表达式中,不能有赋值操作符“=”。
双分支选择结构
if 条件表达式:
语句1/语句块1
else:
语句2/语句块2
s = input("输入一个数字:")
if int(s)<10:
print("s是小于10的数字")
else:
print("s是大于等于10的数字")
输入一个数字:3
s是小于10的数字
三元条件运算符
条件为真时的值 if (条件表达式) else 条件为假时的值
print("s是小于10的数字" if int(s)<10 else "s是大于等于10的数字")
多分支选择结构
if 条件表达式 1:
语句1/语句块1
elif 条件表达式 2:
语句2/语句块2
.
.
elif 条件表达式 n:
语句n/语句块n
else:
语句n+1/语句块n+1
score = int(input("请输入分数:"))
grade = ""
if score<60:
grade = "不及格"
elif score<80:
grade = "及格"
elif score<90:
grade = "良好"
else:
grade = "优秀"
print("分数是{0},等级是{1}".format(score,grade))
请输入分数:70
分数是70,等级是及格
选择结构嵌套
if 表达式 1:
语句块1
if 表达式 2:
语句块2
else:
语句块3
else:
if 表达式4:
语句块4
score = int(input("请输入分数:"))
if score>100 or score<0:
score = int(input("输入错误"))
else:
if score>=90:
grade = "A"
elif score>=80:
grade = "B"
elif score>=70:
grade = "C"
elif score>=60:
grade = "D"
else:
grade = "E"
print("分数是{0},等级是{1}".format(score,grade))
请输入分数:70
分数是70,等级是C
循环结构
用来重复执行一条或多条语句。
while循环
while 条件表达式:
循环体语句
num = 0
while num<=10:
print(num,end="\t")
num +=1
0 1 2 3 4 5 6 7 8 9 10