一、字典

  字典是一组键-值对的数据结构。每个键对应一个值。在字典中,键不能重复。根据键可以查询到值。字典是键和值的映射关系

  字典的定义:

  字典通过花括号中用逗号分隔的元素(键-值。键-值对使用冒号分隔),格式如下:

  1. {键1:值1,[键2:值2,...,键n:值n]}
  2.  
  3. # 值可以为任意对象。字典中的键是唯一的,不能重复。

  字典也可以通过创建dict对象来创建,格式如下:

  1. # 创建一个空字典
  2. dict()
  3.  
  4. # 使用关键字参数,创建一个新的字典
  5. dict(**kwargs)
  6.  
  7. # 从一个字典对象创建一个新的字典
  8. dict(mapping)
  9.  
  10. # 使用序列,创建一个新的字典
  11. dict(iterable)

  

  1、字典的访问操作,基本格式:

  1. # 返回键为key的value;如果ket不存在,则导致KeyError
  2. d[key]
  3.  
  4. # 设置d[key]的值为value;如果key不存在,则添加键/值对
  5. d[key]=value
  6.  
  7. # 删除字典元素;如果ket不存在,则导致KeyError
  8. del d[key]

  2、动态访问字典的数据

  d.keys:返回字典d的键key的列表

  d.values:返回字典d的值values的列表

  d.items():返回字典d的(key,value)对的列表

  3、判断字典键是否存在

  # 如果为True,则表示存在

  key in d

  # 如果为True,则表示不存在

  key not in d

  

  4、字典对象的方法

  我们定义一个字典:

  1.  d = {1:'food',2:'drink',3:'fruit'}
      
  1. # 删除所有元素
  2. d.clear()
  3. print(d)
  4.  
  5. # 输出结果
  6.  
  7. {}
  1. # 浅拷贝字典
  2. d1 = d.copy()
  3. print(d)
  4. print(d1)
  5.  
  6. # 输出结果
  7.  
  8. {1: 'food', 2: 'drink', 3: 'fruit'}
  9. {1: 'food', 2: 'drink', 3: 'fruit'}
  1. #返回键k对应的值,如果key不存在,返回None
  2. print(d.get(1))
  3. print(d.get(5))
  4.  
  5. # 输出结果
  6.  
  7. food
  8. None
  1. #返回键k对应的值,如果key不存在,返回v
  2. print(d.get(1,'无'))
  3. print(d.get(5,'无'))
  4.  
  5. # 输出结果
  6.  
  7. food
  1. # 如果键k存在,返回其值,并删除该元素;否则导致KeyError
  2. print(d.pop(1))
  3. print(d)
  4.  
  5. # 输出结果

  6. food
  7. {2: 'drink', 3: 'fruit'}
  1. # 如果键k存在,返回其值,并删除该元素;否则返回v
  2. print(d.pop(5,'无'))
  3. print(d)
  4.  
  5. # 输出结果
  6.  

  7. {1: 'food', 2: 'drink', 3: 'fruit'}
  1. # 如果键k存在,返回其值;否则添加元素k=v,v默认为None
  2. print(d.setdefault(1))
  3.  
  4. print(d.setdefault(4))
  5. print(d)
  6.  
  7. # 输出结果
  8.  
  9. food
  10. None
  11. {1: 'food', 2: 'drink', 3: 'fruit', 4: None}
  1. # 使用字典或键值对,更新或添加元素到字典d
  2. d1 = {1:'食物',4:'书籍'}
  3. d.update(d1)
  4. print(d)
  5.  
  6. # 输出结果
  7.  
  8. {1: '食物', 2: 'drink', 3: 'fruit', 4: '书籍'}

二、集合

  集合数据类型是没有顺序的简单对象的聚合,且集合中元素不重复。

  集合的定义:花括号中用逗号分隔元素进行定义的,格式如下:

  {x1,[x2,...,xn]}

  也可以通过set对象方法创建集合,格式如下:

  set():创建一个空的集合

  set(iterable):创建一个集合,包含的元素为可枚举对象iterable中的元素

  1、判断集合元素是否存在

    判断一个元素x是否在集合s中,方法如下:

    x in s :如果为True,则表示存在

    x in not s :如果为True,则表示不存在

  1. s = set('hello')
  2.  
  3. print('h' in s )
  4.  
  5. print('H' not in s)
  6.  
  7. # 输出结果
  8.  
  9. True
  10. True

  2、集合的运算:并集、交集、差集和对称差集

    1)并集

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. # 对象方法
  5. print(s1.union(s2))
  6.  
  7. # 运算符方法
  8. print(s1 | s2)
  9.  
  10. # 输出结果
  11.  
  12. {1, 2, 3, 4}
  13. {1, 2, 3, 4}

    2)交集

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. # 对象方法
  5. print(s1.intersection(s2))
  6.  
  7. # 运算符方法
  8. print(s1 & s2)
  9.  
  10. #输出结果
  11.  
  12. {2, 3}
  13. {2, 3}

    3)差集

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. # 对象方法
  5. print(s1.difference(s2))
  6.  
  7. #运算符方法
  8. print(s1 - s2)
  9.  
  10. #输出结果
  11.  
  12. {1}
  13. {1}

    4)对称差集

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. # 对象方法
  5. print(s1.symmetric_difference(s2))
  6.  
  7. #运算符方法
  8. print(s1 ^ s2)
  9.  
  10. # 输出结果
  11.  
  12. {1, 4}
  13. {1, 4}

  

  3、集合的比较运算:相等、子集和超集(又称父集)

    1)相等

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. print(s1 == s2)
  5. print(s1 != s2)
  6.  
  7. # 输出结果
  8. False
  9. True

    2)子集

  1. s1 = {1,2,3}
  2. s2 = {3,2,1}
  3. s3 = {1,2}
  4. s4 = {7,9}
  5.  
  6. # 对象方法
  7. print(s3.issubset(s1))
  8.  
  9. # 运算符方法
  10. print(s3 < s1)
  11.  
  12. 输出结果
  13. True
  14. True

    3)超集

  1. s1 = {1,2,3}
  2. s2 = {3,2,1}
  3. s3 = {1,2}
  4. s4 = {7,9}
  5.  
  6. # 对象方法
  7. print(s2.issuperset(s3))
  8.  
  9. #运算符方法
  10. print(s2 > s3)
  11.  
  12. #输出结果
  13. True
  14. True

  4、集合的其他方法

    1)更新

  1. s1 = {1,2,3}
  2. s2 = {2,3,4}
  3.  
  4. s1.update(s2)
  5. print(s1)
  6.  
  7. # 输出结果
  8. {1, 2, 3, 4}

    2)添加

  1. s1 = {1,2,3}
  2.  
  3. s1.add('a')
  4. print(s1)
  5.  
  6. # 输出结果
  7. {1, 2, 3, 'a'}

    3)删除

      remove

  1. s1 = {1,2,3}
  2.  
  3. # 从集合中删除元素1,若不存在,则导致KeyError
  4. s1.remove(1)
  5. print(s1)
  6.  
  7. #输出结果
  8. {2, 3}

      discard

  1. s1 = {1,2,3}
  2.  
  3. # 从集合中删除元素3,若不存在,不做任何操作
  4. s1.discard(3)
  5.  
  6. print(s1)
  7.  
  8. #输出结果
  9. {1, 2}

      pop

  1. s1 = {1,2,3}
  2.  
  3. # 从集合中随机弹出一个元素,如果s为空,则导致KeyError
  4. s1.pop()
  5.  
  6. print(s1)
  7.  
  8. #输出结果
  9. {2, 3}

    

  

  

  1.  

  

1.13 Python基础知识 - 字典和集合的更多相关文章

  1. python基础之字典、集合

    一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...

  2. Python基础知识---字典

    现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> valu ...

  3. Python基础__字典、集合、运算符

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

  4. Python基础知识--列表和集合

    列表:有序性,可以存放任意类型的对象,通过索引访问,可以分片操作 >>> L = ['id', 1000, 'scd', 1000, 'scd'] >>> L [' ...

  5. python基础知识梳理----6set 集合的应用

    集合内容简介: set 一: 集合简介 集合set集合是python的一个基本数据类型.一般不是很常用set.中的元素是不重复的.无序的.里里面的元素必须是可hash的tuple,bool),str, ...

  6. Python基础知识(六)------小数据池,集合,深浅拷贝

    Python基础知识(六)------小数据池,集合,深浅拷贝 一丶小数据池 什么是小数据池: ​ 小数据池就是python中一种提高效率的方式,固定数据类型使用同一个内存地址 代码块 : ​ 一个文 ...

  7. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  8. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  9. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

随机推荐

  1. Python(八) 正则表达式与JSON

    一.初识正则表达式 正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配 快速检索文本.实现替换文本的操作 json(xml) 轻量级 web 数据交换格式 impor ...

  2. WebApi 参数请求

    收藏来源于:http://www.cnblogs.com/babycool/p/3922738.html 路由配置到id post多个参数 ➕前缀 FromBody 参数为实体 对于一般前台页面发起的 ...

  3. Sub Thread to update main Thread (UI) 2

    Sub Thread to update main Thread (UI)  2 Handler.post(somethread); Handler.sendMessage("Msg&quo ...

  4. UESTC 1584

    http://acm.uestc.edu.cn/#/problem/show/1584 Washi与Sonochi的约定 Time Limit: 3000/1000MS (Java/Others)   ...

  5. Python正则表达式初识(八)

    继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\w”和“\W”,具体的教程如下. 1.“\w”代表的意思是该字符为任意字符,但是和特殊字符“.”的意思不同.“\w”代表的字符主 ...

  6. C/C++(C++内存管理,内联函数,类型转换,命名空间,string类)

    ---恢复内容开始--- 内存管理 new/delete C语言中提供了 malloc 和 free 两个系统函数,#include "stdlib.h"库函数,完成对堆内存的申请 ...

  7. 【js基础】判断是否是合法邮箱地址(正则表达式的应用)

    2019-01-21 09:11:21 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  8. 参考《Python数据处理》中英文PDF+源代码

    在实际操作中掌握数据处理方法,比较实用.采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.E ...

  9. codevs 1019 集合论与图论

    1019 集合论与图论  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 集合论与图论对于小松来说 ...

  10. hdu(2859)——Phalanx(dp)

    题意: 如今有一个n*n的矩阵,然后每一个格子中都有一个字母(大写或小写组成).然后询问你如今最大的对称子矩阵的边长是多少.注意这里的对角线是从左下角到右上角上去的. 思路: 这道题我自己写出了dp的 ...