"pythonic生物人"的第37篇分享


原创不易,点个“赞“或"在看"鼓励下呗

摘要

本节梳理python中另外两种容器字典(dict)和集合(set)的基本用法。

目录

1、字典

  • 字典创建

  • 字典使用

返回字典中元素个数判断字典是否存在某个键取出键对应的值修改键对应的值删除字典的某个键值对返回某个键对应的值,不存在设置默认值替代删除键对应的值取出字典中所有键值对取出字典中所有键返回字典所有键组成的列表取出字典中所有值取出字典中的值并将删除删除字典中所有的键值对字典浅复制

2、集合(set)

  • 集合创建

  • 集合使用

两个集合求并集:使用符号&或者union函数两个集合求差集:使用符号-或者difference函数求两个集合中不同时存在的元素:使用符号^或者symmetric_difference函数求集合元素个数:len(set)成员资格判断a集合和b集合是否有共同元素(相交):使用isdisjoint判断a集合是否属于或等于b集合:使用<=符号,判断b集合是否包含a集合:使用>=符号,>符号和issuperset函数元素x添加到a集合中:a.add(x)移除集合a中元素x:a.remove(x)移除集合a中元素x:a.discard(x)任意移除集合a中的一个元素:a.pop()清空集合a元素:a.clear()

正文开始啦


1、字典

字典(dict)是python中的映射容器。字典中存储键(key)值(value)对,通过键调用值,键具有唯一性,值可以不唯一;每个键值对之间使用逗号分隔,键与值之间使用顿号分割;列表、集合、字典因为可修改所以不能作为字典的键;字符串、数值、元组不可修改可以作为字典的键。
  • 字典创建

#{}直接创建In 1: {"jack":"man", "Rose":"womman"}Out1: {'jack': 'man', 'Rose': 'womman'}#dict函数创建In 3: pre_dict =[("Jack","man"), ("Rose", "woman")]In 5: dict(pre_dict) Out5: {'Jack': 'man', 'Rose': 'woman'}#借助zip创建(zip 将可迭代对象组合成元组列表) In 7: dict(zip(["Jack","Rose"], ["man","woman"]))  Out7: {'Jack': 'man', 'Rose': 'woman'}In 22: {('Jack'):"man", "Rose":"womman"}#元组('Jack')可以作为键Out22: {'Jack': 'man', 'Rose': 'womman'}In 23: {['Jack']:"man", "Rose":"womman"}#列表['Jack']不能作为键 TypeError Traceback (most recent call last) in ----> 1 {['Jack']:"man", "Rose":"womman"}TypeError: unhashable type: 'list'
  • 字典使用

主要介绍一下常见的字典方法。

In [2]: print(dir(dict))

['class', 'contains', 'delattr', 'delitem', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'getitem', 'gt', 'hash', 'init', 'init_subclass', 'iter', 'le', 'len', 'lt', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'setitem', 'sizeof', 'str', 'subclasshook', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

  • 返回字典中元素个数

len(d),返回字典d中键值对(python中一个键值对称为一个项)的个数。

In [38]: len(a_dict)Out[38]: 2
  • 判断字典是否存在某个键

key in d,存在返回True,不存在返回False。

In [49]: "Jack1" in a_dictOut[49]: FalseIn [50]: "Rose" in a_dictOut[50]: True
  • 取出键对应的值

d[key],当key不存在d中时,报错。

In [41]: a_dict["Jack"]Out[41]: 'man'In [42]: a_dic["Lucy"]#字典中不存在Lucy,报错。
---------------------------------------------------------------------------NameError                                 Traceback (most recent call last) in----> 1 a_dic["Lucy"]NameError: name 'a_dic' is not defined
  • 修改键对应的值

d[key] = value。

In [43]: a_dictOut[43]: {'Jack': 'man', 'Rose': 'woman'}In [44]: a_dict["Jack"] = "man1"In [45]: a_dictOut[45]: {'Jack': 'man1', 'Rose': 'woman'}
  • 删除字典的某个键值对

d.pop(key,value),如果key存在,删除字典d中key/value键值对;key不存在,返回指定的value;如果value没指定,报错。

In [98]: a_dictOut[98]: {'Jack': 'man', 'Rose': 'woman'}In [99]: a_dict.pop("Jack")Out[99]: 'man'In [100]: a_dictOut[100]: {'Rose': 'woman'}In [101]: a_dict.pop("Jack","Not exit!")Out[101]: 'Not exit!'In [102]: a_dictOut[102]: {'Rose': 'woman'}
  • 返回某个键对应的值,不存在设置默认值替代

d.get(key,value),当d中存在key时,返回key对应的value;当d中不存在key时,返回指定的value,不指定value返回None。

In [56]: a_dictOut[56]: {'Rose': 'woman'}In [58]: a_dict.get("Rose","haha")#Rose存在,返回对应值。Out[58]: 'woman'In [59]: a_dict.get("Lucy","haha")#Lucy不存在,返回指定value "haha"。Out[59]: 'haha'In [60]: print(a_dict.get("Lucy"))#Lucy不存在,返回None。Out[60]: None
  • 删除键对应的值

del d[key],字典不存在key,报错退出。

In [43]: a_dictOut[43]: {'Jack': 'man', 'Rose': 'woman'}In [44]: a_dict["Jack"] = "man1"In [45]: a_dictOut[45]: {'Jack': 'man1', 'Rose': 'woman'}In [46]: del a_dict["Jack"]In [47]: a_dictOut[47]: {'Rose': 'woman'}In [48]: del a_dict["Jack1"]#不存在键Jack1,报错退出。
---------------------------------------------------------------------------KeyError                                  Traceback (most recent call last) in----> 1 del a_dict["Jack1"]KeyError: 'Jack1'
  • 取出字典中所有键值对

d.items()

In [74]: a_dictOut[74]: {'Rose': 'woman', 'Jack': 'man'}In [75]: a_dict.items()#items返回字典键值对视图对象,支持迭代,通过list转化为列表。Out[75]: dict_items([('Rose', 'woman'), ('Jack', 'man')])In [76]: list(a_dict.items())Out[76]: [('Rose', 'woman'), ('Jack', 'man')]
  • 取出字典中所有键

d.keys()

In [77]: a_dict.keys()Out[77]: dict_keys(['Rose', 'Jack'])In [78]: list(a_dict.keys())Out[78]: ['Rose', 'Jack']
  • 返回字典所有键组成的列表

list(d)

In [30]: a_dictOut[30]: {'Jack': 'man', 'Rose': 'woman'}In [31]: list(a_dict)Out[31]: ['Jack', 'Rose']
  • 取出字典中所有值

d.values()

In [79]: a_dict.values()Out[79]: dict_values(['woman', 'man'])In [80]: list(a_dict.values())Out[80]: ['woman', 'man']
  • 取出字典中的值并将删除

d.pop(key),返回key对应的键,同时删除该键值对。

In [81]: a_dictOut[81]: {'Rose': 'woman', 'Jack': 'man'}In [82]: a_dict.pop("Rose")Out[82]: 'woman'In [83]: a_dictOut[83]: {'Jack': 'man'}
  • 删除字典中所有的键值对

d.clear(),删除字典中所有的键值对,返回空字典{}。

In [85]: a_dictOut[85]: {'Jack': 'man'}In [86]: a_dict.clear()In [87]: a_dictOut[87]: {}
  • 字典浅复制

d.copy()In [89]: a_dictOut[89]: {'Jack': 'man'}In [91]: b_dict = a_dict.copy()In [92]: b_dictOut[92]: {'Jack': 'man'}In [93]: b_dict["Jack"] = "man1"In [94]: b_dictOut[94]: {'Jack': 'man1'}In [95]: a_dictOut[95]: {'Jack': 'man'}

2、集合(set)

  1. 集合是非序列和映射python容器,集合中元素无序,可以理解为只有键的字典(集合中不可能有重复元素);

  2. 集合并不记录元素索引,所以集合不支持索引、切片或其他序列类的操作;

  3. python内置了两种集合类型,set类型可修改,forezenset类型不可变,常见的用途

成员检测(in);序列容器去除重复项;求交集、并集、差集与对称差集。
  • 集合创建

In [116]: {'a', 'b', 'c', 'd', 'e'}#花括号{}包围创建Out[116]: {'a', 'b', 'c', 'd', 'e'}In [117]: set("abcde")#set函数创建Out[117]: {'a', 'b', 'c', 'd', 'e'}

**注意:**空的{}表示字典,而不是集合。

集合使用

  • 两个集合求交集:使用&号或者intersection函数。

In [128]: a_setOut[128]: {'a', 'b', 'c', 'd'}In [129]: b_setOut[129]: {'a', 'b', 'c', 'd', 'e'}In [130]: a_set & b_set #使用&号求交集Out[130]: {'a', 'b', 'c', 'd'}In [131]: a_set.intersection(b_set)#intersection函数求交集Out[131]: {'a', 'b', 'c', 'd'}
  • 两个集合求并集:使用符号&或者union函数

In [132]: a_set | b_set#使用符号|Out[132]: {'a', 'b', 'c', 'd', 'e'}In [138]: a_set.union(b_set)#使用union函数Out[138]: {'a', 'b', 'c', 'd', 'e'}
  • 两个集合求差集:使用符号-或者difference函数

In [142]: a_set - b_set#使用-符号。返回a_set中存在,而b_set中不存在的一个新集合Out[142]: set()In [143]: b_set - a_set#返回b_set中存在,而a_set中不存在的一个新集合Out[143]: {'e'}In [144]: a_set.difference(b_set)#使用difference函数。返回a_set中存在,而b_set中不存在的一个新集合Out[144]: set()In [145]: b_set.difference(a_set)Out[145]: {'e'}
  • 求两个集合中不同时存在的元素:使用符号^或者symmetric_difference函数

In [146]: a_set ^ b_setOut[146]: {'e'}In [147]: a_set.symmetric_difference(b_set)Out[147]: {'e'}
  • 求集合元素个数:len(set)

In [148]: len(a_set)Out[148]: 4
  • 成员资格

In [148]: len(a_set)Out[148]: 4In [149]: "a" in a_setOut[149]: TrueIn [150]: "x" in a_setOut[150]: False
  • 判断a集合和b集合是否有共同元素(相交):使用isdisjoint

有共同元素返回False,否则返回True。

In [151]: a_set.isdisjoint(b_set)Out[151]: FalseIn [152]: b_set.isdisjoint(a_set)Out[152]: FalseIn [153]: a_set.isdisjoint(["x"])Out[153]: True
  • 判断a集合是否属于或等于b集合:使用<=符号,

In [155]: a_set.issubset(b_set)#使用函数issubset,a_set完全属于b_setOut[155]: TrueIn [156]: a_set <= b_set#使用符号<=Out[156]: True
  • 判断b集合是否包含a集合:使用>=符号,>符号和issuperset函数

In [162]: b_set.issuperset(a_set)Out[162]: TrueIn [163]: b_set >= a_setOut[163]: True
  • 元素x添加到a集合中:a.add(x)

如果x已经存在a中,没任何效果;否则加入。

In [171]: a_setOut[171]: {'a', 'b', 'c', 'd'}In [172]: a_set.add("a")#a已存在无任何效果In [173]: a_set.add("x")#添加xIn [174]: a_setOut[174]: {'a', 'b', 'c', 'd', 'x'}
  • 移除集合a中元素x:a.remove(x)

如果 x 不存在于a中则报错。

In [175]: a_setOut[175]: {'a', 'b', 'c', 'd', 'x'}In [176]: a_set.remove("y")#y不存在集合a_set中
---------------------------------------------------------------------------KeyError                                  Traceback (most recent call last) in----> 1 a_set.remove("y")KeyError: 'y'In [177]: a_set.remove("x")In [178]: a_setOut[178]: {'a', 'b', 'c', 'd'}
  • 移除集合a中元素x:a.discard(x)

如果元素x 存在于集合a中则将其移除;不存在没任何效果,与remove有细微差别。

In [178]: a_setOut[178]: {'a', 'b', 'c', 'd'}In [179]: a_set.discard("x")#a_set不存在x元素,没任何效果,区别于remove函数In [180]: a_set.discard("d")In [181]: a_setOut[181]: {'a', 'b', 'c'}
  • 任意移除集合a中的一个元素:a.pop()

如果集合为空则会报错。

In [183]: a_setOut[183]: {'a', 'b', 'c'}In [184]: a_set.pop()Out[184]: 'a'In [185]: a_set.pop()Out[185]: 'c'In [186]: a_set.pop()Out[186]: 'b'In [187]: a_set.pop()---------------------------------------------------------------------------KeyError                                  Traceback (most recent call last) in----> 1 a_set.pop()KeyError: 'pop from an empty set'In [188]: a_set#集合此时已经为空Out[188]: set()
  • 清空集合a元素:a.clear()

In [190]: a_setOut[190]: {'a', 'b', 'c', 'd'}In [191]: a_set.clear()In [192]: a_setOut[192]: set()

同系列文章


python3基础01数值和字符串(一)

python3基础02数值和字符串(二)

python3基础03列表(list)和元组(tuple)

原创不易"点赞"、"在看"励下呗

winform list集合怎么 in过滤_python3基础04字典(dict)和集合(set)相关推荐

  1. python集合set底层原理_Python进阶11_字典dict和集合set的秘密

    本节你将看到关于字典dict和集合set更加深入的原理,尤其是关于散列在其中的作用,将回答以下问题:Python 里的 dict 和 set 的效率有多高? 为什么它们是无序的? 为什么并不是所有的 ...

  2. 【Python基础】字典dict和集合set

    今天看了一些python的字典和集合的文章,发觉底层有些东西自己不是很清楚,关于哈希和内存,网上搜了很多发现都是零星的说明,包括csdn里面都是很多杂乱的记录.通过自己搜集点东西把基础用法和实现原理都 ...

  3. python 删除set指定值_python3基础04字典(dict)和集合(set)

    本节梳理python中另外两种容器字典(dict)和集合(set)的基本用法: 欢迎微信随缘关注@pythonic生物人 目录 1.字典 字典创建 字典使用 返回字典中元素个数 判断字典是否存在某个键 ...

  4. python集合属性方法运算_Python基础__字典、集合、运算符

    之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合. 一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I ...

  5. python set集合_Python字典(dict)和集合(set)

    想必大家都有查字典的经历吧,让我们再回顾一下查字典的步骤:根据拼音或者边旁找到这个字,然后翻到这个字对应的页数,就能看到这个字的详细解释啦. Python字典(dict)其实也是差不多的概念,在字典( ...

  6. 7.python基础之基础数据类型--字典dict

    1.字典: 字典是python中唯一 的映射类型,采用键值对(key-value)的形式存储数据. 字典是无序存储的.且key必须是可哈希的.可哈希表示key必须是不可变类型,如:数字.字符串.元组. ...

  7. 【Python 实战基础】字典 dict 和 json 如何相互转化

    目录 一.实战场景 二.主要知识点 三.菜鸟实战 1.创建 python 文件 2.文件目录 3.运行结果 一.实战场景 字典 dict 和 json 如何相互转化, 将字典数据转 json 格式写入 ...

  8. python不能创建集合的有哪些_Python3基础 frozenset() 创建一个不可更改的集合

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体. ------------------------------------- ...

  9. 字典怎么增加元素_python3基础之字典

    字典和列表一样,也是python内置的一种数据结构. 字典的结构如下图: 列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分.键和值是一一对应的关 ...

最新文章

  1. 理解 CSS 布局和块级格式上下文
  2. 优先级队列(小顶堆)的dijkstra算法
  3. memcached 高可用工具 memcached-ha
  4. 学习笔记之Iframe
  5. python filter
  6. 黑马程序员——java基础---多线程(二)
  7. snmpset对象不可写_[Python]可变对象与多进程通信
  8. UVA 213 Message Decoding
  9. 聊聊有哪些参与项目的好途径吧
  10. [转贴]JAVA:RESTLET开发实例(三)基于spring的REST服务
  11. i/o timeout , 希望你不要踩到这个net/http包的坑
  12. 中国书信礼仪 (一)
  13. 乘法的计算-俄罗斯农夫法
  14. Aqua Comms携手Ciena 测试海底光缆网络150Gbps波长传输
  15. 西门子840d高级编程手册_840D NC 高级编程简单介绍
  16. 仓库盘点的四大方法和盘点流程
  17. 多角度了解ABeam(德硕)技术架构
  18. 【C/C++基础进阶系列】实战记录 -- Dump 文件生成与分析
  19. 数字图像处理学习笔记(三)
  20. Excel-VBA应用(1):批量提取单元格中的超链接URL

热门文章

  1. 压缩base 64字符串_ftp下载多个文件,ftp下载多个文件打包成一个压缩包
  2. java md5加密32位小写_Java生成MD5的方法,简单封装并转为32位小写
  3. python保存创建文件报错 with open(fileName,‘w‘) as fp: IOError: [Errno 22] invalid mode (‘w‘) or filename
  4. Python中包含义及其定义
  5. python 多继承的实现
  6. Python函数的正确用法及其注意事项
  7. Python读取大文件
  8. python获取指定目录下所有文件名os.walk和os.listdir
  9. 10 个平板电脑上的 Python 编辑器
  10. mysql grant 不想让用户看到 系统默认 mysql_MYSQL用户权限管理GRANT使用