字典:
字典是“键值对”的无序的可变序列,每个键值对都包含“键”和“值”,一个键值对是一个元素
“键”是任意的不可变数据:整数、浮点数、字符串、元组,并且“键”不可重复
“值”是任意数据,可重复
# 通过{}和dict()创建字典
a = {'语言':['Python', 'R'], '年龄': 27}
a
{'语言': ['Python', 'R'], '年龄': 27}
b = dict(语言 = ['Python', 'R'], 年龄 = 27)
b
{'语言': ['Python', 'R'], '年龄': 27}
c = dict([('语言', ['Python', 'R']), ('年龄', 27)])
c
{'语言': ['Python', 'R'], '年龄': 27}
# 通过zip()
a = ['语言', '年龄']
b = [['Python', 'R'], 27]
c = dict(zip(a, b))
c
{'语言': ['Python', 'R'], '年龄': 27}
# 通过fromkeys创建值为空的字典
a = dict.fromkeys(['语言', '年龄'])
a
{'语言': None, '年龄': None}
字典元素的访问:
# 通过“键”获得“值”,如果“键”不存在,则报错
c
{'语言': ['Python', 'R'], '年龄': 27}
c['语言']
['Python', 'R']
# 通过get()获得“值”,如果“键”不存在,则返回“None”或者返回指定值
c.get('年龄')
27
print(c.get('a'))
None
c.get('a', '不存在')
'不存在'
# 列出所有的键值对
c.items()
dict_items([('语言', ['Python', 'R']), ('年龄', 27)])
# 列出所有的键和值
c.keys() # 键
dict_keys(['语言', '年龄'])
c.values() # 值
dict_values([['Python', 'R'], 27])
# len()返回键值对的个数
len(c)
2
# 判断一个“键”是否在字典中
'年龄' in c
True
'a' in c
False
字典元素的添加、修改、删除
# 添加,如果键已经存在,则覆盖旧值
c['专业'] = '统计'
c
{'语言': ['Python', 'R'], '年龄': 27, '专业': '统计'}
# update()将新字典的所有元素添加到旧字典上,如果“键”已存在,则覆盖
d = {'学校': 'UCD'}
c.update(d)
c
{'语言': ['Python', 'R'], '年龄': 27, '专业': '统计', '学校': 'UCD'}
# del()删除指定元素,clear()删除所有的键值对,pop()删除指定的键值对并返回对应的值
del c['学校']
c
{'语言': ['Python', 'R'], '年龄': 27, '专业': '统计'}
b = c.pop('专业')
b
'统计'
c
{'语言': ['Python', 'R'], '年龄': 27}
c.clear()
c
{}
# popitem()随机删除和返回该键值对
a = {'语言': ['Python', 'R'], '年龄': 27, '专业': '统计', '学校': 'UCD'}
a.popitem()
('学校', 'UCD')
a
{'语言': ['Python', 'R'], '年龄': 27, '专业': '统计'}
a.popitem()
('专业', '统计')
a
{'语言': ['Python', 'R'], '年龄': 27}
a.popitem()
('年龄', 27)
a
{'语言': ['Python', 'R']}
序列解包:
可用于元组,列表,字典,用于方便的对多个变量赋值
a, b, c = 10, 30, 40 # 元组
a
10
b
30
c
40
[a, b, c] = ['4', 39, ''] # 列表
a
'4'
b
39
c
''
a = {'语言': ['Python', 'R'], '年龄': 27, '专业': '统计'}
x, y, z = a # 默认对键进行操作
x
'语言'
y
'年龄'
z
'专业'
x, y, z = a.items() # 对键值对进行操作
x
('语言', ['Python', 'R'])
y
('年龄', 27)
z
('专业', '统计')
x, y, z = a.values() # 对值进行操作
x
['Python', 'R']
y
27
z
'统计'
练习:
a1 = {'科目': '数学', '分数': 87, '评分': '良'}
a2 = {'科目': '英语', '分数': 90, '评分': '优'}
a3 = {'科目': '语文', '分数': 75, '评分': '良'}
a = [a1, a2, a3]
a
[{'科目': '数学', '分数': 87, '评分': '良'}, {'科目': '英语', '分数': 90, '评分': '优'}, {'科目': '语文', '分数': 75, '评分': '良'}]
a[1].get('分数') # 获得第二行的分数
90
集合:
集合无序可变,元素不能重复,集合的元素是字典的“键”对象,所以不能重复
# 使用{}创建
a = {73, 9, '内容'}
a
{73, 9, '内容'}
# 使用add()添加元素
a.add('')
a
{'', 73, 9, '内容'}
# 使用set()将列表、元组等可迭代对象转为集合,如果存在重复数据,则只保留一个
b = ['a', 'a', 'v', 'e']
c = set(b)
c
{'e', 'v', 'a'}
# remove()删除指定元素,clear()清空集合
a.remove('内容')
a
{'', 73, 9}
a.clear()
a
set()
|或union() 并集
&或intersection() 交集
-(减号)或difference() 差集
控制语句:
条件表达式为False的情况:False(boolean),0,0.0,空值None,空序列(列表,元组,集合,字典,字符串),空range,空迭代
其他情况均为True
条件表达式不能有赋值操作
选择结构:
# 从上到下依次判断,条件符合则停止后面的判断
if 条件:
必须缩进
elif 条件:
缩进
else:
缩进
# 三元条件运算
print(9 if 9 < 8 else '错')
错
循环结构:
while循环:
while 条件:
循环体语句