一、字典(dict)

     1. 概述

         字典是Python唯一的映射类型。

只能使用不可变的对象(比如字符串)来作为字典的键,但是可以把不可变或可变的对象作为字典的值。

键值对在字典中以这样的方式标记:d = key1 : value1, key2 : value2 。注意它们的键/值对用冒号分割,而各个对用逗号分割,

    所有这些都包括在花括号中。

字典中的键/值对是没有顺序的。

字典是 dict 类的实例/对象。

2. 创建与访问

直接通过花括号括起来键/值对来创建。可以这样来创建空字典。字典可以索引,只不过索引值是键值。

利用内置函数 dict() 来创建字典,注意整个函数只有一个参数,如下:

dict3 = dict((('F',70), ('i',105), ('h',115), ('c',67))),只要能让它找到映射关系就OK。

还可以指定关键字参数来创建字典:

dict4 = dict(Turing = '让编程改变世界'),注意此时键即 Turing 不能加引号,会报错。

对于字典还可以通过键来修改值,如果存在这个键,就会修改其值,如果根本不存在这个键,就会再添加一个键/值对。如:

dict4[‘ Turing ’] = ‘ 大家一起来编程’

dict4[' Edison '] = ' 大发明家'

>>>dict4

{'Turing': '大家一起来编程', 'Edison': '大发明家'}。

3. 字典的内置方法

1) fromkeys()

>>> dict1 = {}

>>> dict1.fromkeys((1,2,3))

{1: None, 2: None, 3: None}
            >>> dict1.fromkeys((1,2,3), 'Number')
                   {1: 'Number', 2: 'Number', 3: 'Number'}
            >>> dict1.fromkeys((1,2,3),('one','two','three'))
                   {1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

>>>dict1.fromkeys((1,3),'数字')

{1: '数字', 3: '数字'}

fromkeys方法用来创建一个字典,有两个参数,一个是键,一个是值。注意第二个参数都会赋给所有的键,没有聪明的一一对应。

没有办法通过这个办法修改键的值,强制修改的话会创建一个新的字典。

2)keys()  values()  items()

分别遍历键、值、项。

3)get()

当索引并不是字典中的键时,访问输出时会出错,用get()方法可以巧妙的解决这个问题。

>>> print(dict2[31])


                >>> print(dict2[32])
                       Traceback (most recent call last):
                       File "<pyshell#17>", line 1, in <module>
                       print(dict2[32])
                       KeyError: 32
                >>> dict2.get(32)
                >>> print(dict2.get(32))
                        None
                >>> dict2.get(32,'木有')
                        '木有'
                >>> dict2.get(31,'木有')
                        '赞'

4)clear()

清空字典。如果直接把想要清空的字典赋给空字典,和clear()方法还是有很多不同的,有时候可能有威胁,还是使用clear()方法。

>>> dict2.clear()

>>> dict2
                      {}
               >>> dict2 = {}
               >>> a = {'你好': '哈哈'}
               >>> b = a
               >>> b
                      {'你好': '哈哈'} 
               >>> a = {}
               >>> b
                      {'你好': '哈哈'}
               >>> a = b
               >>> a
                       {'你好': '哈哈'}
               >>> b
                       {'你好': '哈哈'}
               >>> a.clear()
               >>> a
                      {}
               >>> b

{}

5)copy()

浅拷贝,和赋值操作的不同看代码:

>>> a = {1:'one',2:'two',3:'three'}
               >>> b = a.copy()
               >>> c = a
               >>> c
                       {1: 'one', 2: 'two', 3: 'three'}
               >>> a
                       {1: 'one', 2: 'two', 3: 'three'}
               >>> b
                       {1: 'one', 2: 'two', 3: 'three'}
               >>> id(a)
                       57877832
               >>> id(b)
                       57838536
               >>> id(c)
                       57877832

6) pop() 与 popitem()

一个是弹出值,一个是弹出项,后者是随机弹出的。

>>> a.pop(2)
                       'two'
               >>> a
                       {1: 'one', 3: 'three'}
               >>> a.popitem()
                       (1, 'one')

7) setdefault()

添加键或添加键/值对。如:

(注:添加后的顺序随机)

>>> a.setdefault('sq')
               >>> a
                      {'sq': None, 3: 'three'}
               >>> a.setdefault(5,'five')
               >>> a
                      {3: 'three', 5: 'five', 'sq': None}

8) update()

用字典来更新字典,如果参数字典中的键原字典有就更新其值,没有就自动添加上去新键。

二、集合(set)

          1. 概述

集合是字典的“表亲”,花括号不只是字典的特权。当用花括号括起来一堆没有映射关系的元素时就创建了一个集合。

>>> num2 = {1, 2, 3, 4}
            >>> type(num2)
                  <class 'set'>

2. 和数学中的概念一样,集合具有互异性,无序性(因此集合无法用于索引)。

>>> num= {1, 2, 3, 4, 6, 3, 2}
            >>> num
                   {1, 2, 3, 4, 6}
            >>> num[2]
                    Traceback (most recent call last):
                    File "<pyshell#4>", line 1, in <module>
                    num[2]
                    TypeError: 'set' object does not support indexing

3. 内置工厂函数 set() 可以用来创建集合,参数可以是列表,元组,甚至是字符串。

>>> set1 = set([1,2,3, 4,5])
           >>> set1
                  {1, 2, 3, 4, 5}

4. 因为集合的互异性,反而给序列中去除相同的元素提供了一个巧妙的方法。

list2 = list(set(list1))

缺点是无法保证和原序列同样的顺序,慎用。

5. 集合的内置方法 add() remove()

创建不可变集合的函数 frozenset().

6. 其他常见集合内建方法总结

Python中的字典和集合的更多相关文章

  1. Python中的字典与集合

    今天我们来讲一讲python中的字典与集合 Dictionary:字典 Set:集合 字典的语法: Dictionary字典(键值对) 语法: dictionary = {key:value,key: ...

  2. python中的字典 和 集合

    python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...

  3. [19/09/19-星期四] Python中的字典和集合

    一.字典 # 字典 # 使用 {} 来创建字典 d = {} # 创建了一个空字典 # 创建一个保护有数据的字典 # 语法: # {key:value,key:value,key:value} # 字 ...

  4. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  5. C#在foreach循环中修改字典等集合出错的处理

    C#在foreach循环中修改字典等集合出错:System.InvalidOperationException: Collection was modified; enumeration operat ...

  6. 如何将xml转为python中的字典

    如何将xml转为python中的字典 import cElementTree as ElementTree class XmlListConfig(list): def __init__(self, ...

  7. [python语法]python中如何判断一个集合是另一个集合的子集?

    问:python中如何判断一个集合是另一个集合的子集? 答:用issubset()方法 语法: A.issubset(B) 返回: True 如果A是B的子集. False 如果A不是B的子集. 样例 ...

  8. 13.python中的字典

    字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的.也就是一种可变容器,或者是我所比喻的革新派的菜单. 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是 ...

  9. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

随机推荐

  1. JSP 自定义标签的开发流程

    1.编写一个实现Tag接口的标签处理器类 package cn.itcast.web.tag; import java.io.IOException; import javax.servlet.htt ...

  2. PJzhang:从csdn到pipal密码分析工具

    猫宁!!! 偶然看到一篇短文,是对2011年csdn泄露的约643万数据的数据汇总分析,这里做个简要总结 .   一.单一密码使用5000人以上的,14个,当时密码中有两个命名方式很有趣,dearbo ...

  3. 菜鸟系列Fabric——Fabric 1.2 多机部署(3)

    多机部署fabric kafka共识 1. 角色分配 主机1 主机 2 Org1 peer0 1 Org2 peer 0 1 Orderer 0 1 Orderer 2 kafka 0 1 kafka ...

  4. rtsp学习----海康RTSP客户端连接深入分析

    转载于:http://blog.csdn.net/zhouyongku/article/details/41546789 海康相机RTSP连接代码分析 最近在做海康相机rtsp连接获取音视频的工作,现 ...

  5. mysql语法难点

    select * from emp where comm is null or comm=0;/*没有提成的员工*/ 查询有提成的员工所有信息 select * from emp where comm ...

  6. MHA搭建

    https://metacpan.org 下载perl依赖包的网站 ##################上传安装依赖包#################### mkdir /opt/soft_file ...

  7. FFmpeg4.0笔记:本地媒体文件解码、帧格式转换、重采样、编码、封装、转封装、avio、硬解码等例子

    Github https://github.com/gongluck/FFmpeg4.0-study/blob/master/official%20example/my_example.cpp #in ...

  8. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  9. Codeforces 1178B. WOW Factor

    传送门 显然对每个 $o$ ,考虑左边和右边分别有多少 $w$,那么这个 $o$ 的贡献就是左右 $w$ 的出现次数相乘 $w$ 的出现次数可以直接根据每一段连续的 $v$ 得到 那么从左到右扫一遍, ...

  10. python的Email提醒

    目的意义 使用Email自动发送,有利于实时获取爬取信息,更方便的掌握要闻. 导入相关库 MINEText库定义了发送信息, Header定义了发送的主题 formate定义了收件人和发件人的格式信息 ...