1.字典相关操作
1)运算符
字典不支持+、*、<、>、<=、>=;只支持:==,!=
print({'a': 2, 'b': 3} == {'b': 3, 'a': 2}) # True
2)in/not in
键 in 字典 - 判断字典中是否存在指定的键
dict1 = {'a': 2, 'b': 3}
print(10 in dict1) # False
print('a' in dict1) # True
3)相关函数
- len()
- dict(序列) - 将其他数据转换成字典;数据本身必须是序列,序列中的元素是小序列,小序列有且只有两个元素,第一个元素不可变
字典不能转换成数字,但可以转换成布尔;
字典可以转列表
seq = ('ab', '12', '34')
print(dict(seq))
student1 = {'name': '小明', 'age': 19, 'gender': '男'}
list1 = list(student1)
print(list1)
4)相关方法
a.字典.clear() - 清空字典
student = {'name': '小明', 'age': 19, 'gender': '男'}
student.clear()
print(student)
b.字典.copy() - 拷贝字典产生一个新的字典(浅拷贝)
student = {'name': '小明', 'age': 19, 'gender': '男'}
new_student = student.copy()
print(new_student)
new_student['name'] = '小华'
print(student, new_student)
c.dict.fromkeys(序列,值) - 创建一个字典,将序列中的元素作为key,key对应的value都是指定的值
dict2 = dict.fromkeys(['name', 'color', 'gender', 'age'], 100)
print(dict2)
d.字典.item() - 将字典中所有的键值对都转换成元组作为一个序列的元素
student = {'name': '小明', 'age': 19, 'gender': '男'}
print(student.items()) # dict_items([('name', '小明'), ('age', 19), ('gender', '男')])
# 字典.value() - 获取字典中所有的值,返回一个序列
print(student.values()) # dict_values(['小明', 19, '男'])
# 字典.keys() - 获取字典中所有的键,返回一个序列
print(student.keys()) # dict_keys(['name', 'age', 'gender'])
e.字典.setdefault(key,value) - 当key不存在的时候添加键对(不会修改)
student = {'name': '小明', 'age': 19, 'gender': '男'}
student.setdefault('score', 90)
print(student)
# student['score'] = 80
student.setdefault('score', 80)
print(student)
f.字典1.update(字典2) - 将字典2中的键对添加到字典1中
person = {'name': '小明', 'height': 179, 'weight': 70}
student.update(person)
print(student) # {'name': '小明', 'age': 19, 'gender': '男', 'score': 90, 'height': 179, 'weight': 70}
5)字典数据结构的设计
system = {
'user_name': 'abc',
'password': '123123',
'manager': {'name': '张三', 'tel': '19102190192'},
'student': [
{'name': 'a', 'study_id': '111', 'age': 16},
{'name': 'b', 'study_id': '112', 'age': 18},
{'name': 'c', 'study_id': '113', 'age': 19}
]
}
2.集合
1.什么是集合(set)
a.集合
集合是容器型数据类型;将{}作为容器标志,多个元素用逗号隔开:{元素1,元素2,...}
集合是可变的,无序的
b.元素
集合中的元素必须是不可变的数据,而且是唯一(自带去重功能)
set1 = {12, 'an', (10, 20)}
print(set1)
# set2 = {12, 'an', [10, 20]} # TypeError: unhashable type: 'list'
set3 = {12, 'an', (10, 20), 12}
print(set3)
print({1, 2, 3} == {3, 2, 1}) # True,说明无序
# {}表示空字典
set4 = {}
print(type(set4)) # <class 'dict'>
# 空集合
set5 = set([])
print(type(set5)) # <class 'set'>
# 集合去重:set(序列) - 将序列转换成集合(自动去重)
list1 = [11, 29, 90, 11, 28, 7, 66]
list1 = list(set(list1))
print(list1)
2)集合元素的增删改查 (不重要)
a.查 - 获取集合元素,只有遍历一种方法
for 变量 in 集合:
pass
补充:遍历字典和集合的时候,其实是遍历将字典或者集合转换成的列表
names1 = {'c', 'b', 'a'}
for name in names1:
print(name)
b.增
a.集合.add(元素) - 在集合中添加一个元素
b.集合.update(序列) - 将序列中的元素添加到集合中
names1.add('d')
print(names1)
names1.update([100, 200])
print(names1)
names1.update('how')
print(names1)
c.删:集合.remove(元素) - 删除集合中指定的元素
names1.remove('a')
print(names1)
d.改 (不支持改操作)
3)集合相关操作
a.运算符:只支持判断相等的==,!=
# print({1, 2, 3} + {4, 5}) 不支持
b.in / not in
names1 = {'c', 'b', 'a'}
print('a' in names1) # True
c.len,max,min,sum,sorted,set
4)数学集合运算(重要!)
python中的集合直接支持数学的集合运算:|(并集),&(交集),-(差集),^(对称差集),>/<(判断包含)
set1 = {1, 2, 3, 4, 5}
set2 = {3, 9, 2, 4, 0, 8}
# 1)集合1 | 集合2 - 将两个集合合并在一起
print(set1 | set2)
# 2)集合1 & 集合2 - 获取两个集合的公共部分
print(set1 & set2)
# 3)集合1 - 集合2 - 获取集合1中除了集合2剩下的部分
print(set1 - set2)
print(set2 - set1)
# 4)集合1 ^ 集合2 - 获取集合1和集合2除了公共部分以外的部分
print(set1 ^ set2)
# 5)集合1 > 集合2 - 判断集合1中是否包含集合2(判断集合2是否是集合1的子集)
print(set1 > set2) # False
print({1, 2, 3} > {1}) # True
字符串和字符
1)什么是字符串(str)
字符串是容器型数据类型(序列);将''或""作为容器的标志,多个字符(元素)直接包含在引号中
字符串是不可变的、有序的
str1 = ''
str2 = 'akq,1哈哈'
2)字符串中的元素(字符)
字符串中元素叫字符
1)普通字符
2)转义字符:在指定的符号或者字母前加\来表示特殊功能或者特殊意义的字符
' - 表示一个单引号
" - 表示一个双引号
\n - 换行符
\t - 制表符
\ - 表示一个
注意:一个转义字符的长度是1
str3 = '123\'abc'
print(str3)
str4 = '床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。'
print(str4)
str5 = '\t床前明月光,\n\t疑是地上霜。\n\t举头望明月,\n\t低头思故乡。'
print(str5)
str6 = '123\\nabc'
print(str6, len(str6))
3)编码字符: \u4位的十六进制数表示一个字符;数字对应值是字符对应的编码值
字符编码:计算机在存储数据的时候只能存数字。计算机存储文字(字符)的时候实质存的是文字对应的数字,每个文字都会对应一个固定的数字,这个数字就是字符的编码。
编码表:每个字符和数字的一一对应关系就是编码表。常见的编码表有两种:ASCII表、Unicode编码表, Unicode编码表是对ASCII表扩展。
chr(编码值) - 获取编码值对应的字符
ord(字符) - 获取字符对应的编码值
str7 = '一\u4e00\u9fa5'
print(str7)
print(chr(97), chr(65))
print(ord('a'), ord('A'))
# 输出全部中文汉字
count = 0
for code in range(0x4e00, 0x9fa5):
print(chr(code), end='')
count += 1
if count % 20 == 0:
print()