Python3.9学习笔记(慕羽★)(四)

   虽然起步有点晚,但是终于开始学习Python了,本系列文章作为我的学习笔记,主要是为了自己温故知新用,同时也与感兴趣的你们进行分享,本篇文章作为本笔记的第四篇,主要涉及字典和元组的相关语法。


本篇文章主要涉及内容索引

      31、字典
      32、字典的创建
      33、字典元素的获取
      34、字典的常用操作
      35、获取字典视图
      36、字典元素的遍历
      37、字典的特点及字典生成式
      38、元组
      39、元组的创建
      40、元组的遍历

文章正文部分

  31、字典

   (1)字典是Python内置的数据结构之一,与列表一样是一个可变序列

   (2)字典以键值对的方式存储数据,冒号之前的叫做键,冒号之后的叫做值,字典是一个无序的序列,如下面的字典a中存在三对键值对

a = {'第一次:': 92, '第二次:': 96, '第三次:': 98}

   (3)字典的实现原理:字典的实现原理与查字典类似,查字典是先根据部首或拼音查应的页码,Python中的字典是根据key查找value所在的位置,字典中元素的存放位置并不是根据存放的先后决定的

   (4)字典中的键是不可变序列(比如字符串序列、整数序列)

   (5)列表和字典是可变序列,是可以执行增删改操作的

  32、字典的创建

   字典的创建可以采用{}的方式,也可以使用dict函数进行字典的创建,若{}内为空,则创建一个空字典,例子如下:

dir1 = {'第一次': 92, '第二次': 96, '第三次': 98,'总结':'稳步上升'}
print(dir1)
dir2 = dict(第一次=92,第二次=96,第三次=98,总结='稳步上升')
print(dir2)
dir3={}
print(dir3)

   运行结果如下:

{'第一次': 92, '第二次': 96, '第三次': 98, '总结': '稳步上升'}
{'第一次': 92, '第二次': 96, '第三次': 98, '总结': '稳步上升'}
{}

  33、字典元素的获取

   字典的创建可以采用[]的方式,也可以使用get()函数进行字典的创建,所不同的是,若采用[]方法,如果字典中不存在指定的key(键),抛出keyError异常(报错),例子如下:

dir1 = {'第一次': 92, '第二次': 96, '第三次': 98,'总结':'稳步上升'}
print(dir1['第一次'])
print(dir1['第四次'])

   运行结果如下:

92
KeyError: '第四次'

   若采用get()方法,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回,例子如下:

dir1 = {'第一次': 92, '第二次': 96, '第三次': 98,'总结':'稳步上升'}
print(dir1.get('第二次'))
print(dir1.get('第四次'))
print(dir1.get('第四次',99))

   运行结果如下:

96
None
99

  34、字典常用操作

   (1)字典元素的查询

   可以使用in或not in 来判断指定的key(键)在字典中是否存在 若用in查询则存在返回True,不存在返回False,用not in则相反,例子如下:

dir1 = {'第一次': 92, '第二次': 96, '第三次': 98,'总结':'稳步上升'}
print('第二次' in dir1)
print('第四次' in dir1)

   运行结果如下:

True
False

   (2)字典元素的删除

   可以使用del删除指定的键值对,也可以使用clear清空字典,例子如下:

dir1 = {'第一次': 92, '第二次': 96, '第三次': 98,'总结':'稳步上升'}
print(dir1)
del dir1['第一次']
print(dir1)
dir1.clear()
print(dir1)

   运行结果如下:

{'第一次': 92, '第二次': 96, '第三次': 98, '总结': '稳步上升'}
{'第二次': 96, '第三次': 98, '总结': '稳步上升'}
{}

   (3)字典元素的新增和修改

   使用方法见例子:

dir1 = {'第一次': 92, '第二次': 96, }
print(dir1)
dir1['第三次']=98
print(dir1)
dir1['第三次']=100
print(dir1)

   运行结果如下:

{'第一次': 92, '第二次': 96}
{'第一次': 92, '第二次': 96, '第三次': 98}
{'第一次': 92, '第二次': 96, '第三次': 100}

  35、获取字典视图

   (1)keys()函数可以获取字典中所有key

dir1 = {'第一次': 92, '第二次': 96, }
key1=dir1.keys()
print(key1)
print(list(key1))  # 转换成列表

   运行结果如下:

dict_keys(['第一次', '第二次'])
['第一次', '第二次']

   (2)values()函数可以获取字典中所有value

dir1 = {'第一次': 92, '第二次': 96, }
key2=dir1.values()
print(key2)
print(list(key2))  # 转换成列表

   运行结果如下:

dict_values([92, 96])
[92, 96]

   (3)items()函数可以获取字典中所有key、value对

dir1 = {'第一次': 92, '第二次': 96, }
key3=dir1.items()
print(key3)
print(list(key3))  # 转换成列表

   运行结果如下:

dict_items([('第一次', 92), ('第二次', 96)])
[('第一次', 92), ('第二次', 96)]

  36、字典元素的遍历

   常采用语法for item in scores : print( item )对字典元素进行遍历,打印出的item是键,若想打印出值,可以采用之前介绍的字典元素获取的两种方法scores[item]或者scores.get[item],具体例子如下:

dir1 = {'第一次': 92, '第二次': 96, }
for key1 in dir1:
    print(key1,dir1[key1],dir1.get(key1))

   运行结果如下:

第一次 92 92
第二次 96 96

  37、字典的特点及字典生成式

   (1)字典的特点

   ① 字典中的所有元素都是一个key-value对, key不允许重复, value可以重复

   ② 字典中的元素是无序的

   ③ 字典中的key必须是不可变对象,字典也可以根据需要动态地伸缩

   ④ 字典会浪费较大的内存,是一种使用空间换时间的数据结构

   (2)字典生成式

   我们可以使用内置函数zip()生成一个字典,用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表

key1=['One','Two','Three']
value1=[92,96,98]
dir1={key_1: value_1   for key_1,value_1  in  zip(key1,value1)}
dir2={key_1.upper(): value_1   for key_1,value_1  in  zip(key1,value1)}
print(dir1)
print(dir2)

   运行结果如下:

{'One': 92, 'Two': 96, 'Three': 98}
{'ONE': 92, 'TWO': 96, 'THREE': 98}

   有以下几点需要说明一下zip()函数的两个参数分别是储存键和值的列表名,for后面参数是生成字典后,字典中键的变量和值的变量,若在键的变量后加.upper()函数则将键中每个元素转换成大写字母表示

在这里插入图片描述

  38、元组

   (1)元组是Python内置的数据结构之一,是一个不可变序列

   (2)不可变序列与可变序列:① 不变可变序(字符串、元组),没有增、删,改的操作 ②可变序列:(列表、字典),可以对序列执行增、删、改操作,对象地址不发生更改

# 列表
date_1=[10,15,20]
print('原列表:', date_1,'内存地址:',id(date_1))
date_1.append(40)
print('修改后列表:', date_1,'内存地址:',id(date_1))

# 字符串
str1='hell0'
print('原字符串:', str1,'内存地址:',id(str1))
str1+='world'
print('修改后字符串:',str1,'内存地址:',id(str1))

   运行结果如下:

原列表: [10, 15, 20] 内存地址: 2233720452352
修改后列表: [10, 15, 20, 40] 内存地址: 2233720452352
原字符串: hell0 内存地址: 2233720445104
修改后字符串: hell0world 内存地址: 2233724995248

   可以发现修改前后列表的内存地址没有改变,像这样的称之为可变序列,而字符串的地址发生了改变,像这样的称之为不可变序列

  39、元组的创建

   (1)元组的创建有两种种方式:直接小括号、使用内置函数tuple()。对于只包含一个元组的元素需要使用逗号和小括号,即对于只有一个元素的元组需要在其后面加一个逗号,用来跟字符串相区别

# 直接创建(小括号可以省略)
date_1 = (10, 15, 20)
print(date_1, type(date_1))
date_1 = 10, 15, 20  # 第一种方式可以省略小括号
print(date_1, type(date_1))
# 使用函数tuple进行创建
date_1 = tuple((10, 15, 20))
print(date_1, type(date_1))
# 创建只有一个元素的元组
date_1 = (10,)  # 对于只有一个元素的元组需要在其后面加一个逗号,用来跟字符串相区别
print(date_1, type(date_1))

# 创建空元组
date_1=()
print(date_1, type(date_1))
date_1 = tuple()
print(date_1, type(date_1))

   运行结果如下:

(10, 15, 20) <class 'tuple'>
(10, 15, 20) <class 'tuple'>
(10, 15, 20) <class 'tuple'>
(10,) <class 'tuple'>
() <class 'tuple'>
() <class 'tuple'>

   (2)不可变序列与可变序列:① 不变可变序(字符串、元组),没有增、删,改的操作 ②可变序列:(列表、字典),可以对序列执行增、删、改操作,对象地址不发生更改

# 列表
date_1=[10,15,20]
print('原列表:', date_1,'内存地址:',id(date_1))
date_1.append(40)
print('修改后列表:', date_1,'内存地址:',id(date_1))

# 字符串
str1='hell0'
print('原字符串:', str1,'内存地址:',id(str1))
str1+='world'
print('修改后字符串:',str1,'内存地址:',id(str1))

   运行结果如下:

原列表: [10, 15, 20] 内存地址: 2233720452352
修改后列表: [10, 15, 20, 40] 内存地址: 2233720452352
原字符串: hell0 内存地址: 2233720445104
修改后字符串: hell0world 内存地址: 2233724995248

  40、元组的遍历

   用法如下所示:

# 获取单个元素
date_1 = (10, 15, 20)
print(date_1[1])
# 获取多个元素
for item in date_1:
    print(item)

   运行结果如下:

15
10
15
20
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页