当前位置: 首页 > news >正文

Python学习笔记----集合与字典

1. 字符串、列表和元组的元素都是按下标顺序排列,可通过下 标直接访问,这样的数据类型统称为序列。 其中,字符串和元组中的元素不能修改,而列表中的元素可以修改。

集合

1. 与元组和列表类似,Set (集合)中同样可以包含多个不同类型的元素, 但集合中的各元素无序、 不允许有相同元素且元素必须是可哈希 (hashable)的对象。

注:可哈希对象是指拥有 __hash__(self) 内置函 数的对象。列表、集合和字典类型的数据不是可哈希对象,所以它们不能作为集合中的元素。元组、字符串和数值都是可哈希对象。

2. 创建集合

集合中的所有元素都写在一对大括号“{}”中,各元素之间用逗号分隔。

创建集合时,既可以使用{},也可以使用set函数。

set函数的语法格式如下:set([iterable]) ,其中,iterable是一个可选参数,表示一个可迭代对象。

例如:

a={10, 2.5, 'test', 3+4j, True, 5.3, 2.5}
print(a) #输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”b=set('hello')
print(b)
#输出“{'e', 'l', 'o', 'h'}”
#传入了一个字符串参数,执行set函数时会依次将每个字符取出来形成子串作为新建集合中的元素。c=set([10, 2.5, 'test', 3+4j, True, 5.3, 2.5])
print(c) 
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了列表作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素d=set((10, 2.5, 'test', 3+4j, True, 5.3, 2.5))
print(d) 
# 输出“{True, 2.5, 5.3, 10, (3+4j), 'test'}”
# 传入了元组作为参数,执行set函数时会依次将每个元素取出作为新建集合中的元素

注:可迭代(iterable)对象是指可以一次返回它的一个元素,如前面学 习的字符串、列表、元组都是可迭代的数据类型。

注:

  • 与字符串、列表、元组等序列类型不同,集合中的元素不能使用下 标方式访问。
  • 集合主要用于做并、交、差等集合运算,以及基于集合进行元素的 快速检索。
  • {}用于创建空字典,如果要创建一个空集合,则需要使用set()

 例题:

下列选项中,执行时不会报错的语句是(    )。

A.{['Python',True]}

B.{3.5,[1.2,True]}

C.{3.5,{1.2,True}}

D.{3.5,1.2,True}

正确答案:D

解析:集合中的元素必须是可哈希的。哈希是数据结构中的一种存储方式,其特点是检索效率很高。在Python中,可变类型的数据都不可哈希,不能作为集合的元素;不可变类型的数据都可哈希,可以作为集合的元素。内置类型中,数字(含布尔值)、字符串和元组是不可变类型,而列表、集合和字典是可变类型。A选项和B选项中,列表是可变类型,因此不能作为集合中的元素;C选项中,集合是可变类型,因此不能作为集合中的元素;D选项中,数字和布尔值都是不可变类型,因此执行时不会报错。

字典

 1. Dictionary(字典) 是另一种无序的对象集合。

但与集合不同,字典是一种 映射类型,每一个元素是一 个键(key):值(value)对。

2. 在一个字典对象中,键必须是唯一的,即不同元素的键不能相同;

另外,键必须是可哈希数据,即键不能是列表、集合、 字典等类型;值可以是任意类型。

3. 对于不包含任何元素的字典,即{},称为空字典。

创建字典

既可以使用{},也可以使用dict函数。

1. 创建空字典

例如:

a={}b=dict()

执行完毕后,a和b是两个不包含任何元素的空字典。

2. 如果在创建字典的同时,需要给出字典中的元素, 则可以使用下面的方法:

(1) {k1:v1,k2:v2,…,kn:vn}

   #ki和vi(i=1,2,…,n)分别是每一个元素的键和值

a={'one':1, 'two':2, 'three':3}

(2)dict(**kwarg)

b=dict(one=1, two=2, three=3)

#**kwarg是一个或多个赋值表达式,两个赋值表达式之间 用逗号分隔

(3)dict(z)

#z是zip函数返回的结果

c=dict(zip(['one','two','three'], [1,2,3]))

(4)dict(ls)

d=dict([('one',1), ('two',2), ('three',3)])

#ls是元组的列表,每个元组包含两个元素,分别对应键和值

(5)dict(dictionary)

#dictionary是一个已有的字典

e=dict({'one':1, 'two':2, 'three':3})

zip函数

1. zip函数的参数是多个 可迭代的对象(列表 等),其功能是将不 同对象中对应的元素 分别打包成元组,然 后返回由这些元组组 成的列表。 

在Python 3.x中为了减少内 存,zip函数返回的是一个 对象,可以通过list函数转换为列表 ,

如通过 “list(zip(['one','two','three'], [1,2,3]))” 可得到列表 “ [('one', 1), ('two', 2), ('three', 3)]”

访问字典元素

1. 与列表等序列对象不同,在访问字典中的元素时不能通过下标方式访问, 而是通过键访问

info={'name':'张三', 'age':19, 'score':{'python':95,'math':92}}
print(info['name']) 
#输出“张三”print(info['age']) 
#输出“19”print(info['score']) 
#输出“{'python': 95, 'math': 92}”print(info['score']['python']) 
#输出“95”print(info['score']['math']) 
#输出“92”

http://www.lryc.cn/news/420415.html

相关文章:

  • c# 排序、强转枚举
  • “华为杯”第十六届中国研究生数学建模竞赛-C题:视觉情报信息分析
  • html+css+js网页设计 找法网2个页面(带js)ui还原度百分之90
  • 018 | backtrader回测反转策略
  • 《图解HTTP》全篇目录
  • 基于VS2019(Release_x64)+Qt的软件开发—环境配置
  • 【书生大模型实战营(暑假场)闯关材料】入门岛:第1关 Linux 基础知识
  • 240810-Gradio通过HTML组件打开本地文件+防止网页跳转到about:blank
  • go在linux上安装
  • 算法日记day 35(动归之分割等和子集|最后一块石头的重量2)
  • FPGA使用sv生成虚拟单音数据
  • Linux shell编程:监控进程CPU使用率并使用 perf 抓取高CPU进程信息
  • Linux网络编程的套接字分析(其一,基本知识)
  • 后端Web开发之Maven
  • 前端创新实践:用JavaScript打造网页扫码新体验
  • AWS CLI命令行
  • 领导力培养的底层逻辑
  • 【MATLAB第107期】基于MATLAB的Morris局部敏感性分析模型(无目标函数)
  • Tomcat搭建JSPServlet
  • 32位定点数和32/64位浮点数的二进制生成方法
  • STM32利用arm-dsp库进行FIR低通滤波【详细】
  • Efficient-KAN 源码详解
  • Jlink commander使用方法(附指令大全)
  • Java SpringBoot实现PDF转图片
  • elasticsearch SQL:在Elasticsearch中启用和使用SQL功能
  • Java 并发编程:线程变量 ThreadLocal
  • 【OpenHarmony4.1 之 U-Boot 2024.07源码深度解析】018 - init_sequence_f 各函数源码分析(二)
  • LVS原理——详细介绍
  • MYSQL 5.7.36 等保 建设记录
  • fatal: unable to access ‘https://github.com/xxxxx