Day5 字典和字符串

Day5

重点

1.字典

1.列表和字典的选择

如果需要同时保存多个意义相同的数据使用列表;

如果同时保存多个意义不同的数据就使用字典。

# 定义一个变量保存学生的信息
stu = ['小明', '男', 18, 97, 40, 67]
print(stu[0])  # 用列表定义的话,不清楚所提取的数据的含义

# 用字典来定义    用键来说明意义
stu = {'name': '小明', 'gender': '男', 'age': 18, 'height': 97, '体重': 40, 'score': 67}
print(stu['name'])
print(stu['score'])
2.什么是字典(dict)

1.字典是容器型数据类型;将{}作为容器的标志,里面多个键值对(元素)用逗号隔开:

{键1:值1,键2:值2,键3:值3,…}

2.字典是可变的;字典是无序的

3.字典的元素:

​ a. 元素必须是键值对

​ b. 键必须是不可变的类型的数据(字符串、数字、布尔、元组等,一般使用字符串作为键)键是唯一的,同一个字典同一个键只能出现一次

​ c. 值可以是任何类型的数据

1)空字典

d1 = {}

2)字典是无序的
print({'a':10,'b':20} == {'b':20,'a':10})			#True
3)字典的键必须是不可变类型的数据
d2 = {'a':10,20:30,1.2:40,(10,20):50}
4)键是唯一的
d3 = {'a': 10,'a': 100,'b': 20}
print(d3)					#{'a': 100,'b': 20}
5)值可以是任何类型的数据
stu = {'name': '小明', 'gender': '男', 'age': 18, 'height': 97, '体重': 40, 'score': 67}
class1 = {
    'name': 'python2301',
    'teacher':{'name': '余婷','age':18,'tel':'136782301'},
    'student':[
        {'name':'小明','age':28,'school':'清华大学','专业':'计算机'},
        {'name':'小张','age':21,'school':'清华大学','专业':'计算机'},
        {'name':'小王','age':29,'school':'北京大学','专业':'数学'}
    ]
}               #class这个字典中含有三个键值对
3.字典的增删改查
1) 查 - 获取字典的值

a.查单个 - 获取某个值

语法:字典[键] - 获取字典中指定键对应的值

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
print(dog['name'])
print(dog['breed'])
#print(dog['weight'])    #KeyError: 'weight'
class1 = {
    'name': 'python2301',
    'teacher': {'name': '余婷', 'age': 18, 'tel': '13678192302'},
    'students': [
        {'name': 'stu1', 'age': 19, 'school': '清华大学', '专业': '经济', 'contact': {'name': '张三', 'tel': '110'}},
        {'name': 'stu2', 'age': 28, 'school': '北京大学', '专业': '大数据', 'contact': {'name': '李四', 'tel': '192'}},
        {'name': 'stu3', 'age': 22, 'school': '厦门大学', '专业': '计算机', 'contact': {'name': '王五', 'tel': '920'}},
        {'name': 'stu4', 'age': 17, 'school': '南京大学', '专业': '物联网', 'contact': {'name': '赵六', 'tel': '2833'}},
    ]
}  # class这个字典中含有三个键值对

# 1.获取班级名称
print(class1['name'])
# 2,获取讲师的名字
t = class1['teacher']
print(t['name'])
# 3.获取所有学生的名字和对应的学校
for stu in class1['students']:
    print(stu['name'],stu['school'])
# 4.获取未成年学生的名
for stu in class1['students']:
    if stu['age']<18:
        print(stu['name'])
# 5.获取第一个学生的联系人电话
st = class1['students'][0]
print(st['contact']['tel'])
2) 字典的遍历

for 变量 in 字典:

循环体

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
for x in dog:
    print(x, dog[x])
3) 增 改

a.字典[键] = 值 - 当键存在就修改这个键对应的值,当键不存在的时候就添加键值对

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
dog['name'] = '猜猜'
print(dog)  # {'name': '猜猜', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
dog['gender'] = '母狗'
print(dog)  # {'name': '猜猜', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10, 'gender': '母狗'}

b.字典.setdefault(键,值) - 添加键值对(键不存在就添加,存在就不会修改)

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
dog.setdefault('name','大黄')
dog.setdefault('gender','公狗')
print(dog)#{'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10, 'gender': '公狗'}
#对已经有的键值对,setdefault不能进行修改,没有的键值对,可以添加
# 给所有没有折扣的商品添加discount的值为1
goods_list = [
    {'id': 'g001', 'price': 89, 'count': 100},
    {'id': 'g001', 'price': 207, 'count': 50, 'discount': 0.9},
    {'id': 'g001', 'price': 102, 'count': 33},
    {'id': 'g001', 'price': 25, 'count': 897, 'discount': 0.88}
]
for x in goods_list:
    x.setdefault('discount', 1)
print(goods_list)
4) 删 - 删除键值对

a. del 字典[键] - 删除字典指定键对应的键值对

b. 字典.pop(键) - 取走字典指定键对应值

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}
print(dog)

del dog['breed']
print(dog)  # {'name': '旺财', 'age': 3, 'color': '黄色', 'price': 10}

result = dog.pop('color')
print(dog, result)  # {'name': '旺财', 'age': 3, 'price': 10} 黄色
4.字典的相关操作
1)in和not in

键 in 字典 - 字典中是否存在指定的键对应的键值对

d1 = {'a': 10, 'b': 20, 'c': 30}
print(10 in d1)  # False
print('a' in d1)  # True

2.字符串

1.什么是字符串

1)字符串是容器型数据类型,可以同时保存多个文字符号;将单引号或者双引号作为容器标志,引号中的每个符号就是字符串中的每个元素

str1 = 'ak,/是。《表情符也行

2)字符串是不可变的,字符串是有序的

print('abc' == 'bac')		#False

3)元素:引号中每个独立的符号()

可以使任何国家任何名族的任何语言符号,还可以是转义字符

4)转义字符 - 在特定的符号前加入 \ 来表示特殊功能或者特殊意义的符号

	\t		#水平制表符(相当于一个teb键)
	\n		#换行
	\'		#表示一个普通的单引号
	\"		#表示一个普通的双引号
	\\		#表示一个普通的反斜杠
    \r		#换行

str = '\tabc\n123\m'
print(str)		#	abc
				#123\m
    
str1 = 'it\'s me'
print(str1)		#it's me

str2 = 'I say:"good good study, day day up"'
#str2 = "I say:\"good good study, day day up\""
#str2 = 'hi,It\'s me! I say\:"good good study, day day up\"'
print(str2)

str3 = '\\abc'
print(str3)			#\abc

str4 = 'c:\\name\\yuting\\test\\demo.py'
print(str4)			#c:\name\yuting\test\demo.py
2.查 - 获取字符

1) 查单个:字符串[下标] - 获取指定下标对应的元素

str1 = '\thello world'
print(str1[1])		#h
print(str1[-2])		#d

2)遍历

a.

​ for 变量 in 字符串:

​ 循环体

b.

​ for 变量 in range(len(字符串)):

​ 循环体

str2 = 'abc123'
for x in str2:
	print(x)
	
for x in range(len(str2)):
	print(x,str2[x])
3.字符串的相关操作
1)字符串加法运算 - 字符串拼接

字符串1+字符串2 - 将两个字符串合并产生一个新的字符串

# 在字符串str4中每个字符的后面加一个*
ny ='abds'
new_ny= ''
for x in ny:
    new_ny += x + '*'
print(new_ny)
2)字符串乘法运算

字符串 * N、N *字符串 - 将字符串中重复N次产生一个新的字符串

str1 = 'hello'
print(str1 * 3)     # 'hellohellohello'
3)字符串比较运算 - 比较一对不相等的字符的大小(字符串比较大小比较的是字符串的编码大小)

判断’21’>‘123’ True

判断’abcc’>‘MS’ True 因为在电脑编码里 a的编码值比M大

判断‘21’>‘237’ False 因为首位一样 则判断下一位的编码大小,1的编码比3小

#提取字符串中所有的数字字符
str = 'sadgags243556jsdgk53'
new_str = ''
for x in str:
    if '0' <= x <= '9':
        new_str += x
print(new_str)
4)in和not in

字符串1 in字符串2 - 判断字符串1是否是字符串2的子串(判断字符串2是否包含在字符串1中)

str1 = 'abc1234'
print('a' in str1)
print('ab' in str1)  # True
print('ac' in str1)  # False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值