零基础学Python|Python进阶学习第五天

​ 作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家
、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路 关注作者有好处

文末获取源码

一.字典

字典和列表相似,也是可变序列,不过它是无序的,以键值对的形式来存储数据的,这和Java中的Map集合相似。

字典的键具有唯一性,而且是不可变的,数字、字符串或元组都可以充当键,但列表不可以做键。

1.1 字典的创建和删除

字典创建的基本语法:

dictionary = {
    
    'key':value,'key1':value1,....'keyn':valuen}

空字典的创建:

dictionary = {
    
    }
dictionary = dict()

dict()函数除了可以创建空字典外,还可以通过己有数据快速创建字典。主要有以下两种形式:

1.通过映射函数创建字典表

dictionary = dict(zip(list1,list2))
* dictionary 为字典名
* zip()函数:用于将多个列表或元组对应位置的元素组合为元组,并返回包含这些内容的zip对象。如果想得到元组,可以使用tuple()函数将zip对象转换为元组;如果想得到列表,则可以使用list()函数将其转换为列表。
* list1:一个列表,用于指定要生成字典的键
* list2:一个列表,用于指定要生成字典的值
* 返回值:如果list1和list2长度不同,则与最短的列表长度相同

示例:

#示例1  通过dict()进行字典创建
name = ['马丽','沈腾','岳云鹏']  #作为键的列表
sign = ['喜剧','小品','相声'] #作为值的列表
dictionary = dict(zip(name,sign)) #转换为字典
print(dictionary)

2.通过给定的键值对创建字典

dictionary = dict(key1=value1,key2=value2,...keyn=valuen)
* dictionary 为字典名
* key1、key2...keyn:表示元素的键,必须是唯一的,并且不可变,可以是字符串、数字或元组。
* value1、value2..valuen:表示元素的值,可以是任何数据类型,不是必须唯一。

示例:

dictionary = dict(邓肯='石佛',吉诺比利='妖刀',帕克='跑车')
print(dictionary)

此餐还可以通过dict对象的fromkeys方法来创值为空的字典:

dictionary = dict.fromkeys(list1)
* dictionary 表示字典名称
* list1 作为字典的键的列表

示例:

name_list =['邓肯','吉诺比利','帕克']
dictionary = dict.fromkeys(name_list)
print(dictionary)

另外还可以通过己存在的元组和列表来创建字典:

name_tuple =('邓肯','吉诺比利','帕克')
sign = ['石佛','妖刀','跑车']
dict1 = {name_tuple:sign}
print(dict1)

思考:如果把上述按例反过来,列表作键,元组作值是否可行?

字典的删除:

del dictionary

字典的清空:将字典元素清空变为空字典

dictionary.clear()

1.2 通过键值对访问字典

dictionary = {'邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
print(dictionary['帕克'])

此种方式如果KEY不存在,会报异常。

可以通过判断来解决:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
if '帕克' in list(dictionary.keys()):
   print(dictionary['帕克'])
else:
   print('查无此人')

在Python中推荐使用get方法来解决此类问题:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
print(dictionary.get('帕克','查无此人'))

1.3 遍历字典

通过字典的items()方法可以得到字典全部的键值对,然后对其进行循环提取:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
for item in dictionary.items():
   print(item)

如果更细一些想得到每个键值对的KEY和VALUE:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
for key,value in dictionary.items():
   print(key,'绰号是',value)

字典对象还提供了values()和keys() 来获得字典的值和键,然后遍历获取:

dictionary = {'邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
for key in dictionary.keys():
    print('key:',key)
    print('value:',dictionary.get(key,'查无此人'))
dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
for value in dictionary.values():
   print(value)

1.4 添加、修改和删除元素

字典是可变序列,所以可以根据需要随时在其中添加‘键值对’。

dictionary[key]=value

示例:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
dictionary['乔丹']='飞人'
print(dictionary)

可以对己有的键值进行修改:键是唯一的,后添加的值会把前面的值覆盖掉

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
dictionary['邓肯']='大佛'
print(dictionary)

可以使用 del将其中的键值删除:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
del dictionary['邓肯']
print(dictionary)

如果删除一个不存在的键值,会报错,可以判断处理:

dictionary = {
    
    '邓肯':'石佛','吉诺比利':'妖刀','帕克':'跑车'}
if '邓肯' in dictionary:
   del dictionary['邓肯']
print(dictionary)

1.5 字典推导式

使用字典推导式可以快速生成一个字典。

import random
randomdict = {
    
    i:random.randint(10,100) for i in range(1,5)}
print('生成的字典为:',randomdict)

输出:

生成的字典为: {1: 39, 2: 49, 3: 74, 4: 43}

二,集合

集合用于保存不重的元素,它是无序的,它有可变集合(set)和不可变集合(frozenset)两种,本次只讲set,它其实和Java的set非常相似。它的主要应用场景就是保存一系列不重复的元素数据。

2.1 集合的创建

1.直接使用{ }创建:

setname = {element1,element2,....elementn}

集合元素类型没有限制:

set1 = {'str1','str2','str3'}
set2 = {1,2,3,4,5,6}
set3 = {'Python',30,('人生苦短','我学Python')}

2.使用set()函数创建集合

setname = set(iteration)
* setname  集合名字
* iteartion 可迭代的对象,比如:列表、元组、range对象等,如果是字符串,则返回包含不重复的字符集合

示例:

set1 = set('命运给我们的不是失望之酒,而是希望之杯。')
set2 = set([1.45,3.22,4,6])
set3 = set(('人生苦短','我学Python'))
print(set1)
print(set2)
print(set3)

在Python中,推荐使用set()来创建集合。

如果在创建一个空集合,只能使用set(),而不能使用{},因为使用{}来创建表示一个空字典。

2.2 集合的添加和删除

集合的添加:

setname.add(element)
* 添加的元素只能是数字、字符串或布称类型的True和False,不能使用列表、元组等可迭代对象

示例:

set1 = {'str1','str2','str3'}
set1.add('str4')
print(set1)

集合的删除:

可以使用 del删除整个集合,或使用pop() 和remove()移除元素。也可以使用clear()清空集合。

#示例 集合的删除
set1 = {
    
    'str1','str2','str3'}
set1.remove('str3')  #移除指定的元素
set1.pop()   #移除集合左边第一个
print(set1)

2.3 集合的交集、并集和差集运算

交集运算使用 ‘&'符号,用于计算两个集合重复的部分。

并集运算使用 ‘|’符合,用于计算两个集合的合(去重)

差集运算使用 '-'符合,用于去除双方均有的元素

示例:

set1 = {
    
    'java','python','c++'}
set2 = {
    
    'python','html','css'}
print('交集运算:',set1&set2)
print('并集运算:',set1|set2)
print('差集运算:',set1-set2)

输出结果:

交集运算: {'python'}
并集运算: {'python', 'html', 'c++', 'java', 'css'}
差集运算: {'c++', 'java'}

目前为止已经讲解了序列的列表、元组、字典和集合,下面总结一下他们的区别:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/whirlwind526/article/details/132376801