字典、元祖

字典、元祖

回顾:

  • 列表比较运算(两个列表中第一对不相等元素大小)

  • 列表相关函数:sum/min、max、sorted() — 产生新列表 、len 、list sort

  • 列表的相关方法 :列表.xxx() 。列表.clear() / 列表.copy() / 列表.count()/ append()

    /pop() /remove()/insert() …。、

  • 列表推导式:[表达式 for 变量 in 序列]

  • [表达式 for 变量 in 序列 if 条件语句]

    ls  = []
    if ls:      #判断列表是否为空
        print("+++=")
    else:
        print("_____")
    

补充:

单目运算符: not

双目运算符:+ — * / < > …

三目运算符: 表达式2 if 表达式1 else 表达式3

age = 18
result  = "成年" if age>=18 else "未成年"
print(result)

C语言三目运算符:表达式1?表达式2:表达式3 ——判断表达式1 是否为真,如果为真运算结果是表达式2 的值,否则就是表达式3的值

字典
  • 字典和列表的选择:如果同时保存的多个意义相同就使用列表; 如果同时保存多个意义不同就使用字典(保存一个学生的信息和各科的成绩)
  • 什么是字典:字典是容器型数据类型,将{}作为容器的标志,里面多个键值对用逗号隔开 如:student = {“姓名”:“小小”,“age”:10,“性别”:“男”}
  • 字典是可变的(支持增删改)print({‘a’:1,‘b’:2,‘c’:3} == {‘b’:2,‘c’:3,‘a’:1}) #True
  • 字典是无序的(不支持下标操作)
  • 元素的要求:键值对。对键的要求:键必须是不可变类型数据(一般使用字符串);键是唯一的。对值的要求:任何数据类型
  • 查单个:字典[键] —— 获取指定键对应的值。如果键不存在就会报错

    dog = {"name":"旺财","age":3,'bread':"土狗","gender":"母"}
    print(dog["name"],dog['gender'])
    
  • 字典.get(键) ——获取字典中指定键对应的值。键不存在不会报错,并且返回空

    字典.get(键,默认值) —— 获取字典中指定键对应的值。键不存在不会报错,就会返回默认值

    dog = {"name":"旺财","age":3,'bread':"土狗","gender":"母"}
    
    print(dog.get('name'),dog.get('age'))
    
    
    
    dog = {'name':'旺财','age':1,'bread':"二哈",'gender':"母狗"}
    print(dog.get("name"),dog.get("w","无"))
    
"""
# 1)打印班级的名字和教室
print(class1['class_name'],class1['address'])
# 2) 打印班级讲师的名字和年龄
print(class1['lecturer']['name'],class1['lecturer']['age'])
# 3) 打印班主任的电话
print(class1["class_teacher"]["tel"])
# 4) 打印所有的学生的名字
#方法一
all_name = class1["students"]
ls = [x["name"] for x in all_name]
print(ls)
#方法二
all_name = class1["students"]
# for x in all_name:
#     print(x["name"])

# 5)计算所有学生的平均年龄
average = 0
total_age = 0
count = 0
ls_name = class1["students"]
for x in ls_name:
    count+=1
    total_age+=x["age"]
average =total_age / count
print(average)

#方法二
print('平均年龄:',sum([x['age']for x in class1['students']])/len(class1['students']))


# 6) 打印所有学生的联系人的名字
ls_name = class1["students"]
for x in ls_name:
    print(x["contacts"]["name"])

# 7)打印所有联系人电话号码尾号是2的学生的名字

ls_name = class1["students"]
for x in ls_name:
    if (x["contacts"]["tel"][-1])  == '2':
        print(x["name"])

"""
class1 = {
    'class_name': 'Python2204',
    'address': '15教',
    'lecturer': {'name': '余婷', 'age': 18, 'qq': '726550822', 'gender': '女'},
    'class_teacher': {'name': '静静', 'tel': '110'},
    'students': [
        {'name': 'stu1', 'age': 21, 'major': '会计', 'tel': '120', 'contacts': {'name': '张三', 'tel': '162723'}},
        {'name': 'stu2', 'age': 30, 'major': '电子', 'tel': '219223', 'contacts': {'name': '小明', 'tel': '281912'}},
        {'name': 'stu3', 'age': 19, 'major': '旅游管理', 'tel': '123233', 'contacts': {'name': '小花', 'tel': '886552'}},
        {'name': 'stu4', 'age': 25, 'major': '通信', 'tel': '4444221', 'contacts': {'name': '李四', 'tel': '22342345'}},
        {'name': 'stu5', 'age': 25, 'major': '机械', 'tel': '223111', 'contacts': {'name': '王五', 'tel': '555632'}},
        {'name': 'stu6', 'age': 23, 'major': '数学', 'tel': '234234', 'contacts': {'name': '赵六', 'tel': '96533'}}
    ]
}
  • 遍历字典:for 变量 in 字典:

    ​ 循环体(变量获取到的是键)

    dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
    
    for i in dog:
        print(i,dog[i])
        
    name 旺财
    age 1
    bread 二哈
    gender 母狗
    
    

修改

  • 字典[键] = 新值 ——将字典中指定键对应的值修改成指定新的值
  • 字典.setdefault(键,值) ——键存在会保留原来的值(不会被修改)
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}

dog['name'] = '二哈'
print(dog)


dog.setdefault('weight',15)
print(dog)
增加
  • 字典[键] = 值 —— 如果键不存在,就在键值对中添加键值对。如果键存在就是修改
dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
dog['girl'] = '小美'
print(dog)

dog.setdefault('weight',15)
print(dog)
删除

字典[键] ——删除字典中键值对

字典.pop(键) —— 取出指定对应的值

dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母狗"}
del dog['gender'] #删除gender 键值对
a=dog.pop('age')  # 拿走的是值  1
print(dog)
print(a)
print(dog)

{'name': '旺财', 'bread': '二哈'}
1
{'name': '旺财', 'bread': '二哈'}

相关操作

字典不支持 + * < > <= >=

支持 in 和 not in 判断字典中指定的键是否存在

dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母"}
print(10 in dog)  #  False
print('name' in dog)  # True

相关函数:len() dict

len(字典) —— 获取键值对的数量

dict(数据) ——将指定的数据转换成字典。对数据的要求:数据本身要是一个序列;序列中的元素必须是有且只有两个元素的小序列 ;小序列的第一个元素必须是不可变类型数据。如:[‘ab’,[10,20]]

ls =['ab',[10,20]]
print(dict(ls))


{'a': 'b', 10: 20}

注意:字典转换成列表的时候,将字典所有键作为列表的元素(值则丢弃)

dog = {'name': '旺财', 'age': 1, 'bread': "二哈", 'gender': "母"}

print(list(dog))


['name', 'age', 'bread', 'gender']

字典相关方法

  • 字典.clear() —— 清空字典
  • 字典.copy —— 拷贝
  • 字典.keys() —— 获取所有的键
  • 字典.values() —— 获取所有的值
  • 字典.items() —— 将字典转换成一个序列,并将每一个键值对转换成一个元祖
  • 字典1.update(字典2) ——将字典2中所有键值对添加到字典1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值