Nmap vue组件 Apache typora bam Java程序员 checkbox swift3 jar jvm uiwebview 河南普通话考试报名官网 网络营销视频教程 纯html网页模板 jquery通过class获取元素 微信pc版无法获取二维码 pcie转sata oracle重命名表名 axure时间选择控件 nfc卡片 mysql删除表 python随机函数 python安装mysql python如何实现多线程 python搭建环境 python字典get python语言编程 java环境安装 javasocket通信 java中的泛型 linux系统简介 php网络编程 linux命令详解词典 反转颜色 hexworkshop win10有几个版本 给视频加字幕的软件 cubase下载 mac强制重启 圆角矩形工具改变弧度
当前位置: 首页 > 学习教程  > python

Python自学9(字典和集合)

2021/2/8 12:16:03 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

" 在这边的世界里是藏不住眼泪的哦,想哭的时候谁都会忍不住的… " 这么多的数据结构(二):字典、集合1、字典1.1、字典概念1.2、字典特点1.3、创建字典1.3.1、创建空的字典1.3.2、创建包含键值对的字典1.4、字典键值对的…

在这里插入图片描述
" 在这边的世界里是藏不住眼泪的哦,想哭的时候谁都会忍不住的… "

这么多的数据结构(二):字典、集合

  • 1、字典
    • 1.1、字典概念
    • 1.2、字典特点
    • 1.3、创建字典
      • 1.3.1、创建空的字典
      • 1.3.2、创建包含键值对的字典
    • 1.4、字典键值对的添加
    • 1.5、键值对的获取
      • 1.5.1、通过键获取值
      • 1.5.2、通过键获取值( get 方法)
      • 1.5.3、判断字典中是否包含某个键
      • 1.5.4、获取所有键
      • 1.5.5、获取所有值
      • 1.5.6、获取所有键值对的列表
    • 1.6、字典键值对的删除
      • 1.6.1、通过键删除键值对(pop方法)
      • 1.6.2、通过键删除键值对(del方法)
      • 1.6.3、随机删除一个键值对
      • 1.6.4、清空所有键值对
    • 1.7、字典中键值对修改
      • 1.7.1、修改键对应的值
      • 1.7.2、用字典批量更新键值对
    • 1.8、什么时候用字典
  • 2、集合
    • 2.1、创建集合
      • 2.1.1、创建空集合
      • 2.1.2、创建包含元素的集合
    • 2.2、集合元素的添加
      • 2.2.1、向集合中添加一个元素
      • 2.2.2、从另一集合中批量添加元素
    • 2.3、集合元素的获取
      • 2.3.1、查看元素是否存在于集合中
    • 2.4、集合元素的删除
      • 2.4.1、随机删除一个元素,并返回这个元素
      • 2.4.2、删除一个指定的元素
      • 2.4.3、删除一个指定的元素(不抛出 KeyError 异常)
      • 2.4.4、清空所有元素
    • 2.5、集合的运算
      • 2.5.1、求交集
      • 2.5.2、求并集
      • 2.5.3、求差集
      • 2.5.4、判断是否为子集
      • 2.5.5、判断是否为超集
    • 2.6、什么时候用集合
    • 2.7、获取字典和集合中的元素数量
  • 3、总结
    • 3.1、字典
    • 3.2、集合

1、字典

1.1、字典概念

  1. 字典
  2. 字典是一种用来存放若干键值对的数据类型
  3. 键值对
  4. 键值对就是两个对象、其中一个是用来做定位的数据、叫做键(Key)
  5. 另一个是要存放的数据、叫做值(Value)
  6. 在字典中、键值对作为一个整体被存放、我们可以通过键来快速获取到对应的值
# 在 Python 中字典用花括号来表示
# 键值对以 键:值 的方式写入花括号中、有多个键值对时用逗号分隔
dict1 = {'010': 'beijing', '021': 'shanghai'}

# dict1是一个字典、包含二对键值对
'010': 'beijing'
'021': 'shanghai'
# 使用时、我们可以通过 '010' 快速查询到其对应的值是 'beijing'

1.2、字典特点

  1. Python 字典中的键是有要求的、需要是不可变的类型
  2. 如元组、字符串、数字
  3. 而字典中的值可以是任意类型
  4. 字典本身是可变的、我们可以向其中添加、删除、修改键值对
  5. 因为字典不是序列、更不是有序的
  6. 所有它没有列表那样的索引、也不能保证每个键值对的存放次序

1.3、创建字典

1.3.1、创建空的字典

# 语法
字典 = {}

empty_dict = {}
print(empty_dict)
# output:{}

1.3.2、创建包含键值对的字典

# 语法
字典 = {1:1,2:2, ..., 键N:值N}

codes = {'beijing': '010', 'shanghai': '021'}
print(codes)
# output:{'beijing': '010', 'shanghai': '021'}

1.4、字典键值对的添加

  1. 使用这种方式时、若字典中没有这个键、则会创建这个键值对
  2. 若字典中原本已有这个键、则是修改键所对应的值
# 语法
字典[] = 值

codes = {'beijing': '010', 'shanghai': '021'}
codes['wuhan'] = '022'
print(codes)
# output:{'beijing': '010', 'shanghai': '021', 'wuhan': '022'}

1.5、键值对的获取

1.5.1、通过键获取值

# 语法= 字典[]

codes = {'beijing': '010', 'shanghai': '021'}
print(codes['beijing'])
# output:010

# 注意若键不存在则将抛出 KeyError 异常
codes = {'beijing': '010', 'shanghai': '021'}
print(codes['b'])
# output:KeyError(键): 'b'

1.5.2、通过键获取值( get 方法)

  1. 如果通过键获取值时不希望 KeyError 异常抛出、可以使用 get 方法
  2. 若键不存在、则直接返回 None
  3. 也可以给 get 方法传递第二个参数作为默认值
  4. 使得键不存在时直接返回默认值
# 语法= 字典.get()

codes = {'beijing': '010', 'shanghai': '021'}
print(codes.get('beijing'))
print(codes.get('wuhan'))
print(codes.get('bwuhan','hhh'))
# output:010
#        None
#        hhh

1.5.3、判断字典中是否包含某个键

# 语法
布尔值 =in 字典

codes = {'beijing': '010', 'shanghai': '021'}
print('beijing' in codes)
print('wuhan' in codes)
# output:True
#        False

1.5.4、获取所有键

# 语法
键的列表 = 字典.keys()

codes = {'beijing': '010', 'shanghai': '021'}
print(codes.keys())
# output:dict_keys(['beijing', 'shanghai'])

# 获取到的所有键是以迭代器的形式存在
# 用 list() 函数将迭代器转换为列表
codes = {'beijing': '010', 'shanghai': '021'}
print(list(codes.keys()))
# output:['beijing', 'shanghai']

1.5.5、获取所有值

# 语法
值的列表 = 字典.values()

codes = {'beijing': '010', 'shanghai': '021'}
print(codes.values())
# output:dict_values(['010', '021'])

# 获取到的所有值是以迭代器的形式存在
# 用 list() 函数将迭代器转换为列表
codes = {'beijing': '010', 'shanghai': '021'}
print(list(codes.values()))
# output:['010', '021']

1.5.6、获取所有键值对的列表

# 语法
值的列表 = 字典.items()

codes = {'beijing': '010', 'shanghai': '021'}
print((codes.items()))
# output:dict_items([('beijing', '010'), ('shanghai', '021')])

# 获取到的所有键值对是以迭代器的形式存在
# 用 list() 函数将迭代器转换为列表
codes = {'beijing': '010', 'shanghai': '021'}
print((list(codes.items())))
# output:[('beijing', '010'), ('shanghai', '021')]

1.6、字典键值对的删除

1.6.1、通过键删除键值对(pop方法)

  • 可以使用 pop 方法删除一个键值对、并将值返回
# 语法= 字典.pop()

codes = {'beijing': '010', 'shanghai': '021'}
print(codes.pop('beijing'))
# output:010

# 如果 pop 一个不存在的键、则会抛出 KeyError 异常
codes = {'beijing': '010', 'shanghai': '021'}
print(codes.pop('b'))
# output:KeyError: 'b'

# 如果你不希望异常抛出、可以传递 pop 方法的第二个参数作为默认值
# 默认值仅在键不存在时生效、此时方法将直接返回这个默认值、且跳过删除操作
codes = {'beijing': '010', 'shanghai': '021'}
print(codes.pop('b',123))
# output:123

1.6.2、通过键删除键值对(del方法)

# 语法
del 字典[]

codes = {'beijing': '010', 'shanghai': '021'}
del codes['beijing']
print(codes)
# output:{'shanghai': '021'}

1.6.3、随机删除一个键值对

  1. 使用 popitem 随机删除一个键值对、并返回这个键值对的二元组
  2. 二元组的第一个元素是键、第二个元素是值
# 语法
键值二元组 = 字典.popitem()

codes = {'beijing': '010', 'shanghai': '021'}
a = codes.popitem()
print(codes)
print(a)
# output:{'beijing': '010'}
#        ('shanghai', '021')

1.6.4、清空所有键值对

# 语法
键值二元组 = 字典.clear()

codes = {'beijing': '010', 'shanghai': '021'}
codes.clear()
print(codes)
# output:{}

1.7、字典中键值对修改

1.7.1、修改键对应的值

# 语法
字典[] = 值

codes = {'beijing': '010', 'shanghai': '021'}
codes['beijing'] = '000'
print(codes)
# output:{'beijing': '000', 'shanghai': '021'}

# 如果键不存在、则创建键值对
codes = {'beijing': '010', 'shanghai': '021'}
codes['wuhan'] = '000'
print(codes)
# output:{'beijing': '010', 'shanghai': '021', 'wuhan': '000'}

1.7.2、用字典批量更新键值对

# 语法
字典.update(另一字典)

codes = {'beijing': '010', 'shanghai': '021'}
codes.update({'beijing':'000','tianjing':'888'})
print(codes)
# output:{'beijing': '000', 'shanghai': '021', 'tianjing': '888'}

1.8、什么时候用字典

  1. 字典的显著优势是可以通过键快速地查询数据
  2. 字典中的元素以键值对的形式存在、使用时通过键来获取和修改值
  3. 由于字典内部的特殊实现、字典通过键获取值的效率非常高
  4. 如果我们希望将批量的数据存放起来
  5. 并且在需要时能以很高的执行效率来获取其中某个指定的数据
  6. 这时就可以使用字典
  7. 如果我们想在程序中暂时维护一个映射关系
  8. 这时也可以使用字典
  9. 因为字典本质上就是一个映射关系
# 我们可以将城市名和对应的区号保存在字典中
# 这样就可以通过城市名快速地查询到其区号、而不需要进行遍历
area_codes = {
    '北京': '010',
    '上海': '021',
    '天津': '022',
    '重庆': '023',
    '沈阳': '024',
    '南京': '025',
    '武汉': '027',
    '成都': '028',
}
print(area_codes['北京'])
print((area_codes.get('上海')))
# output:010
#        021

2、集合

  1. 集合是一个用于存放批量元素的数据类型
  2. 它不是有序的、其中的元素没有顺序关系
  3. 集合中的元素没有重复、重复的元素将被自动剔除最终只留下一个
  4. 集合也是用花括号来表示
  5. 不同于字典的是、花括号中放的是一个个数据、而不是键值对
  6. 集合是可变的、我们可以向其中添加、删除、修改元素

2.1、创建集合

2.1.1、创建空集合

# 语法
# 注意创建空集合不能直接使用 {}、那样是表示空字典
# 而是使用 set()、这才表示空集合
集合 = set()

empty_set = set()
print(empty_set)
# output:set()

2.1.2、创建包含元素的集合

# 语法
集合 = {元素1, 元素2, 元素N}

set1 = {1,2,3}
print(set1)
# output:{1, 2, 3}

2.2、集合元素的添加

2.2.1、向集合中添加一个元素

# 语法
集合.add(元素)

set1 = {1,2,3}
set1.add(4)
print(set1)
# output:{1, 2, 3, 4}

# 向集合中添加重复元素时、会被去重处理
set1 = {1,2,3}
set1.add(2)
print(set1)
# output:{1, 2, 3}

2.2.2、从另一集合中批量添加元素

# 语法
集合.update(另一集合)

set1 = {1,2,3}
set2 = {3,4,5,6}
set1.update(set2)
print(set1)
# output:{1, 2, 3, 4, 5, 6}

2.3、集合元素的获取

  1. 集合不能像列表那样通过索引来获取元素
  2. 也不能像字典那样通过键来获取值
  3. 集合没法直接获取到某个指定的元素
  4. 想要获取元素、只能通过遍历的方式
  5. 虽然集合不能直接获取到元素
  6. 但是我们依然可以用 in 关键字来判断元素是否存在于集合中

2.3.1、查看元素是否存在于集合中

# 语法
布尔值 = 元素 in 集合

set1 = {1,2,3}
print(4 in set1)
# output:False

2.4、集合元素的删除

2.4.1、随机删除一个元素,并返回这个元素

# 语法
元素 = 集合.pop()

set1 = {1,2,3}
print(set1.pop())
# output:1
# 默认返回第一个元素

2.4.2、删除一个指定的元素

# 语法
集合.remove(元素)

set1 = {1,2,3}
set1.remove(2)
print(set1)
# output:{1, 3}

# 如果要删除的元素不存在、则抛出 KeyError 异常
set1 = {1,2,3}
set1.remove(4)
# output:KeyError: 4

2.4.3、删除一个指定的元素(不抛出 KeyError 异常)

# 语法
集合.discard(元素)

set1 = {1,2,3}
set1.discard(4)
print(set1)
# output:{1, 2, 3}

2.4.4、清空所有元素

# 语法
集合.clear()

set1 = {1,2,3}
set1.clear()
print(set1)
# output:set()

# 列表、字典清空元素也是使用此方法
# 元组没有这个方法是因为元组不可变

2.5、集合的运算

2.5.1、求交集

%1
# 语法
# 可以通过 intersection 方法求多个集合的交集
交集 = 集合1.intersection(集合2, 集合3, 集合N)

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,6,7}
set4 = set1.intersection(set2,set3)
print(set4)
# output:{1}

%2
# 语法
# 也可以直接使用与运算符 & 来代替、完全等效
交集 = 集合1 & 集合2 & 集合N

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,6,7}
set4 = set1 & set2 & set3
print(set4)
# output:{1}

2.5.2、求并集

%1
# 语法
# 可以通过 union 方法求多个集合的交集
并集 = 集合1.union(集合2, 集合3, 集合N)

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,6,7}
set4 = set1.union(set3,set2)
print(set4)
# output:{1, 2, 3, 4, 5, 6, 7}

%2
# 语法
# 也可以直接使用或运算符 | 来代替、完全等效
并集 = 集合1 | 集合2 | 集合N

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,6,7}
set4 = set1 | set3 | set2
print(set4)
# output:{1, 2, 3, 4, 5, 6,}


2.5.3、求差集

%1
# 语法
# 可以通过 difference 方法求多个集合的交集
差集 = 集合1.difference(集合2, 集合3, 集合N)

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,2,7}
set4 = set1.difference(set3,set2)
print(set4)
# output:{3}

%2
# 语法
# 也可以直接使用运算符  -  来代替、完全等效
差集 = 集合1 - 集合2 - 集合N

set1 = {1,2,3}
set2 = {1,4,5}
set3 = {1,2,7}
set4 = set1 - set3 - set2
print(set4)
# output:{3}

2.5.4、判断是否为子集

# 语法
布尔值 = 集合1.issubset(集合2)

set1 = {1,2,3}
set2 = {1,2}
print(set2.issubset(set1))
# output:True

2.5.5、判断是否为超集

# 语法
布尔值 = 集合1.issuperset(集合2)

set1 = {1,2,3}
set2 = {1,2,3}
print(set1.issuperset(set2))
# output:True

2.6、什么时候用集合

  1. 集合非常重要的一个特性是元素无重复
  2. 每个元素都是唯一的、重复的元素将被自动剔除(去重)
  3. 所以如果我们需要存放一系列的数据、并且不希望其中出现重复、那么就可以使用集合
  4. 另外如果想计算两个数据集的交集、并集、差集
  5. 使用集合来承载数据再合适不过了、集合自带的集合运算能轻松解决这些问题

2.7、获取字典和集合中的元素数量

# 利用 len() 函数
set1 = {1,2,3}
dict1 = {'tianjing':'010','wuhan':'023'}
print(len(set1))
print(len(dict1))
# output:3
#        2

3、总结

3.1、字典

  1. 字典是一种用来存放若干键值对的数据类型、可通过键来快速查找值
  2. 字典的键需要是不可变的类型、如数字、字符串和元组
  3. 字典的值可以是任意类型
  4. 字典本身是可变的,所以可向其中添加、修改、删除键值对

3.2、集合

  1. 集合是一个用于存放批量元素的序列
  2. 它不是有序的、且元素不会有重复
  3. 集合也是可变的、我们可以向其中添加、删除、修改元素

本文链接: http://www.dtmao.cc/news_show_2000325.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?