Python-基础知识-字典dict和集合set

字典

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:

>>> stu = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}    #创建字典
>>> stu[‘Michael‘]
95

字典的特性:

  • dict是无序的
  • key必须是唯一的,所以自动去重

字典的基本操作:

  • 增加
  • 删除
  • 修改
  • 查找

一、增加和修改

>>> info = {
...     ‘stu1101‘: "TengLan Wu",
...     ‘stu1102‘: "LongZe Luola",
...     ‘stu1103‘: "XiaoZe Maliya",
... }    #创建一个字典info
>>>
>>> info
{‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘TengLan Wu‘, ‘stu1102‘: ‘LongZe Luola‘}
>>> info["stu1104"] = "苍井空"    #增加一个,如果没有这个键就增加,否则就修改这个键
>>> info
{‘stu1104‘: ‘苍井空‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1101‘: ‘TengLan Wu‘, ‘stu1102‘: ‘LongZe Luola‘}

二、删除

>>> info.pop("stu1101")    #字典的内置方法,删除键名为stu1101
‘TengLan Wu‘
>>> info
{‘stu1104‘: ‘苍井空‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1102‘: ‘LongZe Luola‘}
>>> del info[‘stu1103‘]    #python自带的删除方法,删除键名为stu1103
>>> info
{‘stu1104‘: ‘苍井空‘, ‘stu1102‘: ‘LongZe Luola‘}
>>> info.popitem()    #随机删除一个
(‘stu1104‘, ‘苍井空‘)
>>> info
{‘stu1102‘: ‘LongZe Luola‘}

三、查找

>>> ‘stu1102‘ in info     #判断成员关系
True
>>> info.get(‘stu1102‘)  #查找方法,如果查找对象不存在,此方法不报错,没有返回结果
‘LongZe Luola‘
>>> info[‘stu1105‘]    #此方法查找不存在的对象会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘stu1105‘

四、获取字典中所有键名、值和键值对

>>> info = {
...     ‘stu1101‘: "TengLan Wu",
...     ‘stu1102‘: "LongZe Luola",
...     ‘stu1103‘: "XiaoZe Maliya",
... }
>>>
>>>
>>> info.values()    #获取值
dict_values([‘XiaoZe Maliya‘, ‘TengLan Wu‘, ‘LongZe Luola‘])
>>> info.keys()    #获取键名
dict_keys([‘stu1103‘, ‘stu1101‘, ‘stu1102‘])
>>> info.items()    #获取键值对,以list的方式返回
dict_items([(‘stu1103‘, ‘XiaoZe Maliya‘), (‘stu1101‘, ‘TengLan Wu‘), (‘stu1102‘, ‘LongZe Luola‘)])

五、setdefault方法

>>> info.setdefault("stu1106","Alex")
‘Alex‘
>>> info
{‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘}
>>> info.setdefault("stu1102","龙泽萝拉")  #因为字典中已有stu1102,并且字典有自动去重功能
‘LongZe Luola‘
>>> info
{‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘}

六、update方法

>>> info
{‘stu1102‘: ‘LongZe Luola‘, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b) #将字典b加入到字典info中
>>> info
{‘stu1102‘: ‘龙泽萝拉‘, 1: 2, 3: 4, ‘stu1103‘: ‘XiaoZe Maliya‘, ‘stu1106‘: ‘Alex‘}

七、循环字典

#方法1,建议使用
for key in info:
    print(key,info[key])

#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
    print(k,v)

八、多级嵌套字典及字典

>>> football = {
...     ‘英超‘:{
...         ‘曼联‘:{
...             ‘积分‘:60,
...             ‘进球‘:45,
...             ‘排名‘:1
...         },
...         ‘阿森纳‘:{
...             ‘积分‘:55,
...             ‘进球‘:30,
...             ‘排名‘:4
...         },
...         ‘切尔西‘:{
...             ‘积分‘:59,
...             ‘进球‘:40,
...             ‘排名‘:2
...         }
...     },
...     ‘中超‘:{
...         ‘广州恒大‘:{
...             ‘积分‘:45,
...             ‘进球‘:25,
...             ‘排名‘:1
...         },
...         ‘上海上港‘:{
...             ‘积分‘:20,
...             ‘进球‘:10,
...             ‘排名‘:2
...         },
...         ‘江苏苏宁‘:{
...             ‘积分‘:30,
...             ‘进球‘:40,
...             ‘排名‘:3
...         }
...     },
...     ‘西甲‘:{
...         ‘巴萨‘:{
...             ‘积分‘:60,
...             ‘进球‘:55,
...             ‘排名‘:1
...         },
...         ‘皇马‘:{
...             ‘积分‘:55,
...             ‘进球‘:59,
...             ‘排名‘:2
...         },
...         ‘马竞‘:{
...             ‘积分‘:55,
...             ‘进球‘:58,
...             ‘排名‘:3
...         }
...     }
... }
>>>
>>> football
{‘中超‘: {‘江苏苏宁‘: {‘排名‘: 3, ‘积分‘: 30, ‘进球‘: 40}, ‘广州恒大‘: {‘排名‘: 1, ‘积分‘: 45, ‘进球‘: 25}, ‘上海上港‘: {‘排名‘
: 2, ‘积分‘: 20, ‘进球‘: 10}}, ‘英超‘: {‘曼联‘: {‘排名‘: 1, ‘积分‘: 60, ‘进球‘: 45}, ‘阿森纳‘: {‘排名‘: 4, ‘积分‘: 55, ‘进球‘:
30}, ‘切尔西‘: {‘排名‘: 2, ‘积分‘: 59, ‘进球‘: 40}}, ‘西甲‘: {‘马竞‘: {‘排名‘: 3, ‘积分‘: 55, ‘进球‘: 58}, ‘巴萨‘: {‘排名‘: 1,
‘积分‘: 60, ‘进球‘: 55}, ‘皇马‘: {‘排名‘: 2, ‘积分‘: 55, ‘进球‘: 59}}}>>> football[‘中超‘][‘广州恒大‘]{‘排名‘: 1, ‘积分‘: 45, ‘进球‘: 25}>>> football[‘中超‘][‘广州恒大‘][‘积分‘]45

集合

  set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

集合的主要作用:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

集合的基本操作:

  • 创建
  • 增加
  • 删除

一、创建

>>> set1 = set([1,3,4,5,99,54,22])
>>> set2 = set([3,22,5,6,7,10,4])
>>> set1
{1, 99, 3, 4, 5, 54, 22}
>>> set2
{3, 4, 5, 6, 7, 10, 22}
>>>
>>> set3 = set("Hello")    #创建一个唯一字符的集合
>>> set3
{‘e‘, ‘l‘, ‘H‘, ‘o‘}

二、增加

>>> set1.add(20)
>>> set1
{1, 99, 3, 4, 5, 20, 54, 22}
>>> set2.update([10,37,42])
>>> set2
{3, 4, 5, 6, 7, 37, 10, 42, 22}

三、删除

>>> set1.remove(1)    #如果元素不存在,会报错
>>> set1
{99, 3, 4, 5, 54, 22}
>>> set1.discard(100)    #如果元素存在就删除,不存在则do nothing
>>> set1
{99, 3, 4, 5, 54, 22}
>>> set1.pop()    #使用pop()随意删除一个
99
>>> set1
{3, 4, 5, 54, 22}
>>> len(set1)    #set 的长度
5

四、集合

>>> set1 = set([1,3,4,5,99,54,22])
>>> set2 = set([3,22,5,6,7,10,4])
>>> set1
{1, 99, 3, 4, 5, 54, 22}
>>> set2
{3, 4, 5, 6, 7, 10, 22}
#包含set1和set2中的每一个元素,取并集(即A和B)
>>> set1.union(set2)
{1, 99, 3, 4, 5, 6, 7, 10, 54, 22}
>>> set3 = set1 | set2
>>> set3
{1, 99, 3, 4, 5, 6, 7, 10, 54, 22}
#包含set1和set2中相同的元素,取交集(即AB中都有的)
>>> set1.intersection(set2)
{3, 4, 5, 22}
>>> set3 = set1 & set2
>>> set3
{3, 4, 5, 22}
#包含set1中有但是set2中没有的元素,取差集(即A有B没有)
>>> set1.difference(set2)
{1, 99, 54}
>>> set3 = set1 - set2
>>> set3
{1, 99, 54}
#包含set1和set2中不重复的元素,取对称差集(即A有B没有,B有A没有)
>>> set1.symmetric_difference(set2)
{1, 6, 7, 99, 10, 54}
>>> set3 = set1 ^ set2
>>> set3
{1, 6, 7, 99, 10, 54}
#set4是否set5的子集
>>> set4 = set([1,2,3,4,5,6,7,8,9])
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set5 = set([1,3,5,7,9])
>>> set5
{1, 3, 5, 9, 7}
>>> set4.issubset(set5)
False
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set6 = set4 <= set5
>>> set6
False
#set4是否包含set5的全部元素
>>> set4.issuperset(set5)
True
>>> set4
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> set6 = set4 >= set5
>>> set6
True

五、成员关系测试

>>> set7 = set([1,2])
>>> set7
{1, 2}
>>> 1 in set7    #测试1是否是set7的成员
True
>>> set7 = set([1,2,100])
>>> set7
{1, 2, 100}
>>> 100 not in set7    #测试100是否不是set7的成员
False
时间: 2024-10-13 21:42:48

Python-基础知识-字典dict和集合set的相关文章

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

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

Python基础知识---字典

现在在实习期间,好久没用Python了,今天在做Java项目时用的HashMap让我联想到了Python中的字典,就写一些Python字典的知识吧,复习复习. 字典:  key --> value的映射关系,字典是无序性的,字典的key是不可变类型的,如int, str, float,tuple... 1.创建字典 (1)第一种方式创造字典,一次给全 >>> user = {'id': 1000, 'name': 'scd', 'password':'123'} >>&

Python基础之字典dict(薄弱环节重点回顾,记不住打死自己)

字典是我Python基础里面学的最薄弱的环节,重新回顾,务必深入骨髓. Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组.布尔值也可以,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 重点就是字典的键必须是可以被哈希的,什么叫可以被哈希我说不上来,简单的说就是不可变对象. a=

Python基础知识(八)—集合

集合 set 定义 由一系列不重复的不可变类型变量组成的可变散列容器. 相当于只有键没有值的字典(键则是集合的数据). 基础操作 创建空集合: 集合名 = set()   集合名 = set(可迭代对象) 创建具有默认值集合: 集合名 = {1, 2, 3} 集合名 = set(可迭代对象) 添加元素:集合名.add(元素) 删除元素:集合名.discard(元素) 运算 1.交集&:返回共同元素. s1 = {1, 2, 3} s2 = {2, 3, 4} s3 = s1 & s2  #

python基础之字典dict

不可变数据类型:tuple.bool.int.str --可哈希类型可变数据类型:list.dict.set --不可哈希类型dict-key 必须是不可变数据类型,可哈希dict-value 任意数据类型dict 优点:二分查找.存储大量的关系型数据 特点:无序的-没有索引,只能按照键值对查找增:dict[key] = value dict.setdefault(key) dict.setdefault(key ,value)删:dict.pop(key) dict.pop(key,retur

Python基础入门—字典dict

目录 字典 字典的定义 字典对象增加元素 字典对象元素删除 字典对象的修改 字典对象元素的查找 字典的深浅拷贝 字典 字典是一种可变数据类型 点典的元素存储方式是键值对的形式,键值对之间用逗号隔开 键值对的形式形如:key:value 最外层用{}括起来 d = {key1 : value1, key2 : value2 } 由于字典是键值对的形式,所以字典是无序的,自然不能切片和索引,而是通过键来取值 键:一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一 值:可以取任何数据类型

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

Python基础知识(四)------字典 字典 一丶什么是字典 ? dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ? 键: 必须是可哈希,(不可变的数据类型),必须是唯一的 ? 值: 任意数据类型 特点: ? 查询的效率非常高,通过key来查找元素 ? 内部使用key来计算一个内存地址(暂时), hash算法,key必须是不可变的数据类型(key 必须是可哈希的数据类型),key必须是不可变的数据类型 ? 字典是无序的, python3.6版本以上,默

python中几个常见的黑盒子之“字典dict” 与 “集合set”

这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: >>> hash(56) 56 >>> hash("I like python") -4698211515002810579 对于这种标准散列的机制,常常用于字典类型(dict)的实现,而dict就是我们通常所说的散列表.同样,集合类型(set)也是通

Python基础知识梳理 - 第02部分

本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等. Python还提供了若干处理数字对象的工具, 如内置数学函数pow, abs等, 标准库math, random等. 看下数字的简单使用. In [15]: 123 + 234 Out[15]: 357 In [16]: 1.5 * 4 Out[16]: 6.0 In [32]: pow(2,