iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python-Dict&Set类型
  • 455
分享到

Python-Dict&Set类型

类型PythonDict 2023-01-31 02:01:58 455人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python的另外两种重要的数据类型Dict和Set,可以快速按照关键字检索信息 Dict - 字典 list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的

python的另外两种重要的数据类型Dict和Set,可以快速按照关键字检索信息

Dict - 字典

list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字:

['Adam', 'Lisa', 'Bart']

或者考试的成绩列表:

[95, 85, 59]

但是,要根据名字找到对应的成绩,用两个 list 表示就不方便。

如果把名字和分数关联起来,组成类似的查找表:

'Adam' ==> 95
'Lisa' ==> 85
'Bart' ==> 59

给定一个名字,就可以直接查到分数。

Python的 dict 就是专门干这件事的。用 dict 表示“名字”-“成绩”的查找表如下:

Python-Dict&Set类型

我们把名字称为key,对应的成绩称为value,dict就是通过 key 来查找 value。

花括号 {} 表示这是一个dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。

由于dict也是集合,len() 函数可以计算任意集合的大小:

Python-Dict&Set类型

注意: 一个 key-value 算一个,因此,dict大小为3。

访问dict

创建了一个dict,用于表示名字和成绩的对应关系:

Python-Dict&Set类型

那么,如何根据名字来查找对应的成绩呢?

可以简单地使用 d[key] 的形式来查找对应的 value,这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:

Python-Dict&Set类型

注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError:

Python-Dict&Set类型

要避免 KeyError 发生,有两个办法:

一是先判断一下 key 是否存在,用 in 操作符:

Python-Dict&Set类型
如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。

二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:

Python-Dict&Set类型

### dict的特点

dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。

不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。

由于dict是按 key 查找,所以,在一个dict中,key不能重复。

dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:

Python-Dict&Set类型

打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。

dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。

不可变这个限制仅作用于key,value是否可变无所谓:

Python-Dict&Set类型

最常用的key还是字符串,因为用起来最方便。

更新dict

dict是可变的,也就是说,我们可以随时往dict中添加新的 key-value。比如已有dict:

d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
}

要把新同学'Paul'的成绩 72 加进去,用赋值语句:

>>> d['Paul'] = 72

再看看dict的内容:

>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 59}

如果 key 已经存在,则赋值会用新的 value 替换掉原来的 value:

>>> d['Bart'] = 60
>>> print d
{'Lisa': 85, 'Paul': 72, 'Adam': 95, 'Bart': 60}

遍历dict

由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。

直接使用for循环可以遍历 dict 的 key:

Python-Dict&Set类型

由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。

Python-Dict&Set类型

## set

dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。

有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。

创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

>>> s = set(['A', 'B', 'C'])

可以查看 set 的内容:

print s```

set(['A', 'C', 'B'])

请注意,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是无序的。

因为set不能包含重复的元素,所以,当我们传入包含重复元素的 list 会怎么样呢?

>>> s = set(['A', 'B', 'C', 'C'])
>>> print s
set(['A', 'C', 'B'])
>>> len(s)
3

结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。

由于set存储的是无序集合,所以我们没法通过索引来访问。

访问 set中的某个元素实际上就是判断一个元素是否在set中。

例如,存储了班里同学名字的set:

>>> s = set(['Adam', 'Lisa', 'Bart', 'Paul'])

我们可以用 in 操作符判断:

Bart是该班的同学吗?

>>> 'Bart' in s
True

Bill是该班的同学吗?

>>> 'Bill' in s
False

bart是该班的同学吗?

>>> 'bart' in s
False

看来大小写很重要,'Bart' 和 'bart'被认为是两个不同的元素。

set的特点

set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。

set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。

最后,set存储的元素也是没有顺序的。

set的这些特点,可以应用在哪些地方呢?

事先创建好一个set,包含'MON' ~ 'SUN':

Python-Dict&Set类型

再判断输入是否有效,只需要判断该字符串是否在set中:

Python-Dict&Set类型

### 遍历set

由于 set 也是一个集合,所以,遍历 set 和遍历 list 类似,都可以通过 for 循环实现。

直接使用 for 循环可以遍历 set 的元素:

Python-Dict&Set类型
注意: 观察 for 循环在遍历set时,元素的顺序和list的顺序很可能是不同的,而且不同的机器上运行的结果也可能不同。

用 for 循环遍历set,打印出 name: score 来:

Python-Dict&Set类型
注意:for循环之后变成tuple类型,tuple是有索引号的,所以加上数字分开。

## 更新set

由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:

一是把新的元素添加到set中,二是把已有元素从set中删除。

添加元素时,用set的add()方法

Python-Dict&Set类型

如果添加的元素已经存在于set中,add()不会报错,但是不会加进去了:

Python-Dict&Set类型

删除set中的元素时,用set的remove()方法:

Python-Dict&Set类型

如果删除的元素不存在set中,remove()会报错.

针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去:

Python-Dict&Set类型

做法:

Python-Dict&Set类型

--结束END--

本文标题: Python-Dict&Set类型

本文链接: https://www.lsjlt.com/news/185366.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python-Dict&Set类型
    Python的另外两种重要的数据类型Dict和Set,可以快速按照关键字检索信息 Dict - 字典 list 和 tuple 可以用来表示顺序集合,例如,班里同学的名字: ['Adam', 'Lisa', 'Bart'] 或者考试的...
    99+
    2023-01-31
    类型 Python Dict
  • python之dict与set
    dict全称dictionary,使用键-值(key-value)存储,书写一个dictname={:::} (name[])当数据量大时,字典比列表和元组速度快dict实现原理和查字典是一样的,假设字典包含一万字,list查询方法是一个一...
    99+
    2023-01-31
    python dict set
  • python的dict,set,list
    字典(dict)dict 用 {} 包围 dict.keys(),dict.values(),dict.items() hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key del 或 dict.pop可以删除一个it...
    99+
    2023-01-31
    dict python list
  • python数据类型dict、list、
    在测试时候我们经常会碰到要把读取的数据转成自己想要类型,比如字典转字符串、字符串转列表等等。 下面通过例子介绍一下:一、字典转字符串:(不改变原始字典a的值) 转元组:(不改变原始字典a的值)这里只把字典的key转过来,如果要把值转过来,这...
    99+
    2023-01-31
    数据类型 python list
  • Python 内置类型 dict, li
    近段时间发现一个 Python 连接数据库的连接是线程不安全的,结果惹得我哪哪儿都怀疑变量的多线程是否安全的问题,今天终于找到了正确答案,那就是 Python 内置类型 dict,list ,tuple 是线程安全的。 请参考官方...
    99+
    2023-01-31
    类型 Python li
  • Python中的Set与dict
    目录一、Set集合类型二、set和dict的数据类型限制一、Set 集合类型 Set 集合类型 (交差并补) 特点 :无序 , 自动去重 集合用{}表示,元素间用逗号分隔建立集合类型...
    99+
    2024-04-02
  • 详解python函数传参传递dict/list/set等类型的问题
    传参时传递可变对象,实际上传的是指向内存地址的指针/引用 这个标题是我的结论,也是我在做项目过程查到的。学过C的都知道,函数传参可以传值,也可以传指针。指针的好处此处不再赘述。 先...
    99+
    2024-04-02
  • Python映射类型之dict详解
    目录映射类型—dictlist(d)len(d)d[key]d[key]=valuedeld[key]keyinditer(d)clear()copy()classmet...
    99+
    2024-04-02
  • 变量类型-Dict
    教程:一:字典的创建        1:字典的介绍------>d = {key1:value1, key2:values2}    (1)dictionary(字典) 是 Python 中最有用的数据类型。字典是无序的对象集合  ...
    99+
    2023-01-30
    变量 类型 Dict
  • Python -- dict 类
    Python dict类常用方法:class dict(object):        def clear(self):  #清除字典中所有元素形成空字典,del是删除整个字典; >>> test {'k2': 'v2',...
    99+
    2023-01-31
    Python dict
  • Python中set 和dict 的总结
    Setset的定义: set是可变的,无序的,不重复的元素组成的可迭代的集合。 set () 定义一个空集合。set(iterable)  定义一个set例如:set1=set(range(100)) set 中的元素set中的元素必须是可...
    99+
    2023-01-31
    Python set dict
  • python-字典dict和集合set
    目录1.字典 字典的相关操作 获取字典的长度2.集合 1.字典 字典是python中的一种数据结构。 它的内容由**键-值(key-value)**的方式存在。 dict拥有良好的...
    99+
    2024-04-02
  • Python内建类型dict源码分析
    本篇内容主要讲解“Python内建类型dict源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内建类型dict源码分析”吧!深入认识Python内建类型—&...
    99+
    2023-07-05
  • Python映射类型中dict怎么用
    这篇文章给大家分享的是有关Python映射类型中dict怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。映射类型 - dict字典可用多种方式来创建:使用花括号内以逗号分隔键: 值对的方式: {&ls...
    99+
    2023-06-29
  • list,tuple,set,dict汇
          有序/无序 追加/删除元素 元素可/不可重复 元素类型 创建方式 List 有序 可追加删除追加:list.append(item),list.insert(index,item)删除:list.pop()...
    99+
    2023-01-31
    tuple list dict
  • Python中Dict和Set如何使用
    这篇文章将为大家详细讲解有关Python中Dict和Set如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 一、dictPython内置了字典:dict的支持,dict全称d...
    99+
    2023-06-15
  • 浅析python中的set类型
    目录一. 定义二. 创建set1. 直接使用{}创建新的set并初始化2. 使用set关键字来创建3. 创建空的set三. 基本操作1. 重复的操作在set中自动被过滤2. 通过ad...
    99+
    2024-04-02
  • Python中的Set与dict实例分析
    这篇文章主要讲解了“Python中的Set与dict实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的Set与dict实例分析”吧!一、Set 集合类型Set 集合类型 ...
    99+
    2023-06-29
  • Python 数据类型--集合set
    目录一、定义二、操作三、运算一、定义 集合中的元素是无序的、唯一的、不可变的类型。集合是一个特殊的列表,可以对数据去重。 lists = [1,3,5,7,3,4,6,2,7,9] ...
    99+
    2024-04-02
  • python--字典(dict)和集合(set)详解
    目录一、集合1.集合定义2.创建集合3.去重4.集合增删5.关系运算6.排序7.frozenset8.练习9.特性二、字典1.字典定义2.字典打印3.字典元素删除4.setdefau...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作