字典和字符串

DAY5 字典

  • 字典是一对一对的键值对
  • 同时保存多个含义不相同的数据----字典
  • 意义性质相同----列表

1.列表和字典的选择

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

2.什么是字典

"""
1)字典是容器型数据类型;将{}作为容器的标志,
里面多个键值对(元素)用逗号隔开:{'键1':值1, '键2':值2,'键3':值3}
2)字典是可变的,字典是无序的
3)字典的元素
    a.元素必须是键值对
    b.键必须是不可变的类型的数据(字符串 数字  布尔 元组等,一般使用字符串作为键)
    c.键是唯一的
    d.值可以是任何类型的数据
"""
#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)值可以是任何类的数据
student = {'name': '小明', 'gender': '男', 'age': 18, 'height': 97, '体重': 40, 'score': 67}
class1 = {
    'name': 'python2301',
    'teacher': {'name': '余婷', 'age': 18, 'tel': '13678192302'},
    'students': [
        {'name': '小明', 'age': 28, 'school': '清华大学', '专业': '计算机'},
    ]
}

3.字典的增删改查

1.查 - -获取字典的值
 #1)查单个       -获取某一个值
"""
语法:字典[键]        -获取字典中指定键对应的值
"""

举例1:

dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色','price': 10}
print(dog['name'])
print(dog['breed'])
print(dog['price'])
# print(dog['weight'])      # KeyError: 'weight' 打印列表中不存在的数据会报错

举例2:

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'}},
    ]
}

# 1)获取班级的名称
print(class1['name'])
# 2)获取讲师的名字
print(class1['teacher']['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)获取第一个学生联系人的电话
print(class1['students'][0]['contact']['tel'])



2.增. 改
"""
1)字典[键] = 值     -当键存在就修改这个键对应的值;不存在就添加键值对
2)字典.setdefault(键,值)        -添加键值对(键不存在就添加,存在不会修改)
"""
# 1)语法1:
dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色','price': 10}
print(dog)
dog['name'] = '金山'
print(dog)  #{'name': '金山', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10}

dog['gender']= 'female'
print(dog)  #{'name': '金山', 'age': 3, 'breed': '土狗', 'color': '黄色', 'price': 10, 'gender': 'female'}

# 语法2:
dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色','price': 10}
print(dog)
dog.setdefault('name', '多多')
print(dog)
dog.setdefault('gender', '公狗')
print(dog)

# 案例 给所有没有折扣的商品添加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)

3.删 --删除键值对
"""
1)del 字典[键]       -删除字典中指定键对应的键值对
2)字典.pop            -删除字典中指定键对应值
"""
dog = {'name': '旺财', 'age': 3, 'breed': '土狗', 'color': '黄色','price': 10}
print(dog)

del dog['breed']
print(dog)
print('--------------------人间枝头,各自乘流------------------------')
result1 = dog.pop('color')
print(dog, result1)
4.字典的相关操作
# 1)in 和  not in
# 键 in 字典     -判断字典中是否存在指定的键值对
d1 = {'a': 10, 'b': 20, 'c': 30}
print('a' in d1)   #True
print('10' in d1)   #False

4.字符串

1)字符串
"""
1)容器型数据类型str,可以同时保存多个文字符号;将'' 或者" "作为容器标志
引号中的每个符号就是字符串中的元素
2)字符串是不可变的;字符串是有序的--->顺序影响结果
3)元素:
    引号中的每个独立的符号
    可以是任何国家任何民族的任何语言符号,还可以是转义字符
4)转义字符  -在特定的符号前加\ 来表示特殊功能或者特殊意义的符号
一个转义字符的长度为1 
\n = \r     -换行
\t      -水平制表符(相当于按了一个tab键)
\'      -表示一个普通的单引号
\"      -表示一个普通的双引号
\\      -表示一个普通的反斜杠
"""
2)查 -获取字符
# 1)查单个:字符串[下标]       -获取指定下标对应的元素
str1 = '\thello world!'
print(len(str1))

print(str1[1])       # h
print(str1[-2])     #d
# 
2)遍历
"""
a.
for 变量 in 字符串:
    循环体

b.
for 变量 in range(len(字符串)):
    循环体


"""
#举例:
str2 = 'abd123'
for x in str2:
    print(x)   # a b d 1 2 3

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

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

str1 = 'hello'
str2 = 'Python'
str3 = str1 + '' +str2
print(str3)  # helloPython
  • 2)字符串乘法运算

字符串N ,N字符串 -将字符串中的元素重复N次产生一个新字符

str1 = 'hello'
print(str1 * 3)str4 = 'abc'
new_str = ''
for x in str4:
    new_str = new_str + x + '*'  #等同于 new_str += x + '*'
print(new_str) # hellohellohello

案例:

# 案例:在字符串str4中每个字符后添加一个*
# str4 = 'abc' ->'a*b*c'
str4 = 'abc'
new_str = ''
for x in str4:
    new_str = new_str + x + '*'  #等同于 new_str += x + '*'
print(new_str) # hellohellohello
  • 3)字符串的比较运算

比较第一队不相等的字符大小(比的是字符编码值大小ASCll编码)

print('ab' > 'MN')
"""
判断x是否是数字字符:'0' <= x <= '9'
判断x是否是小写字母: 'a' <= x <= 'z'
判断x是否是大写字母:'A' <= x <= 'Z'
判断x是否是字母:'a' <= x <= 'z' or 'A' <= x <= 'Z'

"""

案例:

# 案例:提取字符串中所有的数字字符
# eg:# 'sj23没说是你289sjsj 2=3-=29'   ->  '232892329'
str1 = 'sj23没说是你289sjsj 2=3-=29'
new_str = ''
for x in str1:
    if '0' <= x <= '9':
        new_str += x
print(new_str)
  • 4)in 和 not in

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

#举例:
list1 = [10, 20, 30, 40]
print(10 in list1)      #True
print([10, 20] in list1)    #Flase

print('--------------------人间枝头,各自乘流------------------------')
# eg:
str1 = 'abc123'
print('a' in str1)       #True
print('ab' in str1)      #True
print('ac' in str1)     #False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值