【python】元组、字典、的一些详细操作,修改字典的值以及一些常用方法:del,len(),keys(),values(),items(),max(),min(),del(),clear()

当天知识点回顾

  • 能够知道元组的定义格式(当元组中只有一个元素的时候,定义格式是: a = (18, ) )
  • 能够知道元组和列表的区别( 元组定义使用小括号 (), 列表使用中括号``[]``,元组中的元素不可修改不可删除)
  • 能够知道元组可以使用 for 循环遍历,可以使用下标来获取元组中的某一个元素
  • 能够知道字典的定义格式 {key1:value1, key2:value2, .....}
  • 能够知道字典在取值的时候是使用 key 来取值 dict[key]
  • 能够知道字典在修改值的时候使用 key 来修改 dict[key] = new_value
  • 能够知道字典新增数据 dict[key] = new_value 如果 key 存在表示修改数据,如果key不存在,表示新增数据
  • 能够知道字典删除数据的方法 del dict['key'] 根据键删除对应的值, del dict 删除整个字典, dict.clear() 清空字典
  • 能够知道查看字典的长度的方法 len(), 取出所有key的列表 keys(),取出所有值的列表values(),取出包含所有键值的元组的列表 items()
  • 能够使用for循环遍历字典
  • 能够使用OrderDict创建一个有序的字典
  • 能够知道 公共运算符的使用 +(合并) 、*(复制) 、in(是否存在)、not in(是否不存在)
  • 能够使用 python内置函数 len() 计算元素个数、max() 计算容器内元素最大值、min() 计算容器内元素最小值、del()删除变量

随堂练习

  1. 创建一个元组,元组中只有一个元素 zhangsan
  2. 创建一个空字典 变量名为 info
  3. 接上一题,向字典 info 中添加新的键值对,保存如下信息:姓名是张三
  4. 接上一题,存在字典 info = {‘name’:‘张三’},怎样访问字典中元素 name 的值
  5. 接上一题,存在字典 info = {‘name’:‘张三’},怎样修改字典中的元素 ‘name’ 的值为 ‘李四’
  6. 接上一题,存在字典 info = {‘name’:‘李四’}, 删除元素 name
  7. 存在字典 info = {‘name’:‘张三’},清空整个字典
  8. 存在字典 info = {‘name’:‘张三’},删除整个字典
  9. 存在字典 info = {‘name’:‘张三’},怎样测量键值对个数
  10. 怎样测量键值对个数
  11. 怎样获取字典中的所有key
  12. 怎样获取字典中的所有value
  13. 怎样用for循环变量字典
  14. 现有列表 [22,44,66,1]怎么获取列表中的最大值和最小值?

每日练习

题目1(实操)

题干

现有:typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
我想获得“alisi”这个内容,你能否想到三种方法来做?

训练目标

元组按下标取值
元组的切片操作
元组的遍历操作

训练提示

  1. 在元祖里面,可以按照下标来取值
  2. 在元组里面,也是可以支持切片(与字符串类似)操作的
  3. 在元组里面,可以通过遍历取到每一个元素

参考方案

  1. 用元组取下标为2的值
  2. 可以利用切片从下标2开始取到下标3之前
  3. 可以用for循环来遍历所有的值,判断,如果有一个是alisi,那就输出

操作步骤

  1. typle1[2]
  2. typle1[2:3]
  3. for x in typle1先执行遍历,再进行判断

参考答案

typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
# 获取“alisi
print(typle1[2])
print(typle1[2:3])

for name in typle1:
    if "alisi" in name:
        print("alisi")

题目2(实操题)

题干

有如下元组:
typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
求出他的长度

训练目标

  1. 元组中内置方法len的使用

训练提示

  1. 对于这个题目要求,我们可以用到自己学过的知识,比如遍历这个元组,并且同时记录元素个数
  2. 但是对于我们强大的python来说,有没有什么最直接的方式呢?

参考方案

  1. 参考len用法

操作步骤

  1. 直接将元组放入len()中即可

参考答案

typle1 = ("tom","kaisa","alisi","xiaoming","songshu")
print(len(typle1))

题目3(实操题)

题干

现有列表:
name_list =["tom","kaisa","alisi",["xiaoming","songshu"]]
现在有个要求,将最外层的列表转换成元组存储,里面的小列表不变;
并且向小列表中添加一个元素“python”

训练目标

  1. 元组的强制转换
  2. 元组虽然是不可变类型,但是元组中的列表是可变的

训练提示

  1. 元组可以直接完成强制转换
  2. 什么是不可变类型?
  3. 元组作为不可变类型,那么元组中的元素如果是可变类型,那么可以在那个可变类型中添加吗?

参考方案

  1. 用tuple()这个方法
  2. 在元组的可变元组中,进行添加元素操作,如果报错那么就可以证明:如果不可变类型中的的元素是可变类型,那么可变类型以是可以完成增加元素的

操作步骤

  1. tuple(namelist)即可直接完成元组对列表的强制转换
  2. 对可变类型的某一元素进行直接增加,看是否会报错

参考答案

name_list =["tom","kaisa","alisi",["xiaoming","songshu"]]
name_dict = tuple(name_list)
print(name_dict)

name_dict[3].append('python')
print(name_dict)

题目4(实操题)

题干

现有字典dict1 = {'name':'python'},将键为'name'的值更改为'chuanzhi'

训练目标

字典中键值对的更改操作

训练提示

  1. 已经有了一个键值对,要对其进行更改值
  2. 此时只需要使用’='来执行赋值操作就行

参考方案

  1. 先指定要更改的键
  2. 使用“=”符号,给这个键赋值一个值为python的字符串

操作步骤

  1. dict1[“name”]来指定键的名称,用‘=’来赋值要更改的值(‘chuanzhi’)

参考答案

dict1 = {'name':'python'}
dict1['name'] = 'chuanzhi'
print(dict1)

拓展提高

题目5(实操题)

题干

现有字典dict1 = {'name':'chuanzhi','age':18}
要求:

​ 1.删除age:18这个键值对

​ 2.将整个字典里面的所有键值对,清空

训练目标

  1. 对于字典中删除的操作
  2. del的使用
  3. clear() 的使用

训练提示

  1. 有给定的字典,我们要怎么来完成删除操作?
  2. 在删除操作中,del与clear有怎么样的区别?

参考方案

  1. 删除一个指定的键值对,要用到del。
  2. 清空整个字典,要用到clear()方法。

操作步骤

  1. del 要删除的键
  2. 调用字典字典的clear的方法即可。

参考答案

dict1 = {'name':'chuanzhi','age':18}

del dict1['age']

dict1.clear()

题目6 (实操题)

题干

现有字典dict1 = {'name':'chuanzhi','age':18}
要求:

​ 1.使用循环将字典中所有的键输出到屏幕上
​ 2.使用循环将字典中所有的键输出到屏幕上
​ 3.使用循环将字典中所有的键值对输出到屏幕上
​ 输出方式:

​ name:chuanzhi
​ age:18

训练目标

  1. for循环的使用复习
  2. 学会如何获取字典所有的键
  3. 学会如何获取字典所有的值
  4. 学会如何获取字典所有的键值对

训练提示

  1. 用for来实现循环
  2. 用字典.keys()来获取所有的键
  3. 用字典.values()来获取所有的值
  4. 用字典.items()来获取所有的键值对

参考方案

用for来实现循环,让字典.keys()取到所有的键并控制循环次数,依次打印出每一个值,值与键值对同理;

操作步骤

  1. 让字典.keys()获取所有的值,将所有的值进行循环遍历,并依次print()
  2. 让字典.keys()获取所有的值,将所有的值进行循环遍历,并依次print()
  3. 让字典.items()获取所有的值,将所有的值进行循环遍历,并依次print(key, “:”, value)

参考答案

dict1 = {'name':'chuanzhi','age':18}

for key in dict1.keys():
    print(key)

for value in dict1.values():
    print(value)

for key,value in dict1.items():
    print(key,":",value)

题目7 (实操题)

题干

有这样的一个列表

product = [
    {"name": "电脑", "price": 7000},
    {"name": "鼠标", "price": 30},
    {"name": "usb电动小风扇", "price": 20},
    {"name": "遮阳伞", "price": 50},
]

然后小明一共有8000块钱,那么他能不能买下这所有商品?
如果能,请输出“能”,否则输出“不能”

训练目标

if判断语句的复习使用
列表与字典的复合使用
遍历列表与遍历字典的使用

训练提示

题目中给了“能不能”三个字,那么这时候用什么语句来实现呢?
题目中数据是用列表来套字典来存储的,那么获取数据是不是要遍历呢?
在判断能不能买下的时候,那么要用那两个数据进行判断呢,这两个数据分别是什么?

参考方案

使用双层for循环来遍历每一个数据,找到价格进行累计,之后判断

操作步骤

  1. 双层for循环来循环数据
  2. 在每一层循环中来判断并累计所有的价格
  3. 在循环结束之后,用总价格进行与总钱数进行比较

参考答案

product = [
    {"name": "电脑", "price": 7000},
    {"name": "鼠标", "price": 30},
    {"name": "usb电动小风扇", "price": 20},
    {"name": "遮阳伞", "price": 50},
]

sum_price = 0
for dict1 in product:
    for key in dict1:
        if key == 'price':
            sum_price += dict1['price']

print(f'购买的总价格是:{sum_price}')

if sum_price <= 8000:
    print('能')
else:
    print('不能')

自主预习

题目8 (实操题)

题干

定义一个简单的函数run,函数的功能是输出"我在跑步" 以及 “管住嘴,迈开腿”,并调用此函数。

训练目标

  1. 如何定义一个函数
  2. 调用函数的方式

训练提示

  1. 定义函数的形式是什么?声明函数的关键字是什么?
  2. 怎么让函数运行?

参考方案

  1. 用def关键字定义函数
  2. 用函数名+小括号的方式来调用函数

操作步骤

  1. def run(): …
  2. run()

参考答案

def run():
    print('我在跑步')
    print('管住嘴,迈开腿')
run()

题目9 (实操题)

题干

在第一题中,我们已经用函数run实现了一些功能,如果我们想run函数做的操作执行1000遍,怎么实现代码?

训练目标

  1. 让同学们知道应用函数的好处

训练提示

  1. 我们用run函数来实现一个功能,实现一次功能就调用一次run函数,那么实现1000遍怎么实现呢?

参考方案

  1. 执行1000遍函数,可以调用1000次函数
  2. 可以用for循环来实现1000次调用

参考答案

def run():
    print('我在跑步')
    print('管住嘴,迈开腿')

for i in range(1000):
    run()


题目10

定义一个函数max,接受的参数类型是数值,最终返回两个数中的最大值

训练提示

第一步:定义一个函数max

第二步:定义两个形参

第三步:通过比较这两个参数返回其中较大的

参考答案

def compare(a,b):
    return max(a,b)
a =int(input('请输入一个整数a:'))
b =int(input('请输入一个整数b:'))

c = compare(a,b)
print(f'a,b较大的数是:{c}')

题目11

定义一个函数 sum_random 接收二个参数 m, n ,在函数中计算 m + n 的值,并打印结果,要求 m 和 n 是 1 – 100 之间的数

训练提示

第一步:定义函数并接收两个参数

第二步:判断这两个参数是都在1-100之间,如果在,将这两个数相加值保存,如果不在则提示输入错误

第三步:调用函数

参考答案
def sum_random(m,n):
    return m + n

m = int(input('请输入数字m:'))
n = int(input('请输入数字n:'))

if 1 <= m <= 100 and 1 <= n <=100:
    print(sum_random(m,n))
else:
    print('输入错误,请输范围:1-00,请重新输入')

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页