Python之字典与集合的基本操作
一、字典的基本操作
1.1 空字典与字典更新
1.1.1 添加条目
定义空字典即将一对空的大括号”{}“赋给字典变量。
语法格式:字典名【键】 = 值
>>> dictArea = {}
>>> dictArea
{}
>>> dictArea['中国'] = 1200
>>> dictArea['美国'] = 1100
>>> dictArea['法国'] = 1000
>>> dictArea
{'中国': 1200, '美国': 1100, '法国': 1000}
1.1.2 修改条目
语法格式:字典名【键】 = 值
>>> dictArea
{'中国': 1200, '美国': 1100, '法国': 1000}
>>> dictArea['法国'] = 900
>>> dictArea
{'中国': 1200, '美国': 1100, '法国': 900}
可以看出修改条目和添加条目是同一种操作,所以用于修改条目时,指定的键必须对应已存在的条目,否则就是添加条目。另外需要注意的是,修改条目实质上是修改与键关联的值,而具有唯一性的键是不可以被修改的。
1.2 删除字典条目
删除字典条目的方法有很多,但是都是通过键来指定要删除的条目。
1.2.1 使用 del 命令删除指定条目
语法格式:del 字典名【键】
>>> dictArea
{'中国': 1200, '美国': 1100, '法国': 900}
>>> del dictArea['法国']
>>> dictArea
{'中国': 1200, '美国': 1100}
1.2.2 使用 pop() 方法删除指定条目
语法格式:字典名.pop(键,默认值)
>>> dictArea
{'中国': 1200, '美国': 1100}
>>> dictArea.pop('美国')
1100
>>> dictArea
{'中国': 1200}
注意:使用pop()方法时,要保证删除的键在字典中存在,如果不确定是否存在时,需要给出默认值,否则会报错。另外,最少要包含一个用于指定键的参数,如果参数都缺省的话,系统会报错。
1.2.3 用popitem()方法随机删除字典条目
语法格式:字典名.popitem()
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
>>> dictArea.popitem()
('英国', 1100)
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200}
删除的条目是以元组的形式返回。3.6版本之后,popitem()方法默认返回最后一个添加进字典的条目。
1.2.4 用clear()方法清空字典条目
语法格式:字典名.clear()
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200}
>>> dictArea.clear()
>>> dictArea
{}
调用了clear()方法的字典虽然删除了所有条目,但依然是一个空字典。
1.2.5 直接删除整个字典
del 字典名
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
>>> del dictArea
>>> dictArea
Traceback (most recent call last):File "<stdin>", line 1, in <module>
NameError: name 'dictArea' is not defined
1.3 查找字典条目
1.3.1 成员运算符 in
语法格式:键 in 字典
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
>>> '中国' in dictArea
True
>>> '俄国' in dictArea
False
1.3.2 用 get() 方法获取条目的值
字典名.get(键,默认值)
>>> dictArea
{'中国': 1500, '美国': 1400, '法国': 1300, '日本': 1200, '英国': 1100}
>>> dictArea.get('中国')
1500
>>> dictArea.get('俄国')
>>>
1.4 字典的遍历
1.4.1 遍历字典中所有的键
字典有一个称为keys()的方法可以用来返回字典中的所有的键。
>>> dictAreas
{'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
>>> dictAreas.keys()
dict_keys(['中国', '美国', '英国', '法国'])
>>> for key in dictAreas.keys():print(key)中国
美国
英国
法国
>>> for key in dictAreas.keys():print(key,dictAreas[key])中国 1500
美国 1300
英国 1200
法国 1000
1.4.2 遍历字典中所有的值
字典中也提供了一个用来返回所有值的方法values();
>>> dictAreas
{'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
>>> dictAreas.values()
dict_values([1500, 1300, 1200, 1000])
>>> for value in dictAreas.values():print(value)1500
1300
1200
1000
1.4.3 遍历字典中所有的条目
字典的items()方法能以(键,值)的形式返回所有条目;
>>> dictAreas
{'中国': 1500, '美国': 1300, '英国': 1200, '法国': 1000}
>>> dictAreas.items()
dict_items([('中国', 1500), ('美国', 1300), ('英国', 1200), ('法国', 1000)])
>>> for item in dictAreas.items():print(item)('中国', 1500)
('美国', 1300)
('英国', 1200)
('法国', 1000)
1.5 字典的排序
字典里的条目是没有顺序的,严格来说,字典是不支持排序的,我们只能将字典中的条目按照我们希望的顺序进行显示。
由于中文的排序涉及到编码的问题,所以将键改为英文。
>>> dictArea
{'China': 1500, 'Russia': 1300, 'Canada': 1200}
>>> sorted(dictArea)
['Canada', 'China', 'Russia']
>>> dictArea
{'China': 1500, 'Russia': 1300, 'Canada': 1200}
>>> ls = sorted(dictArea)
>>> ls
['Canada', 'China', 'Russia']
>>> for country in ls:print(country,dictArea[country])Canada 1200
China 1500
Russia 1300
1.6 字典的合并
1.6.1 使用for循环
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> for k,v in dictArea2.items():dictArea1[k] = v>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
1.6.2 使字典的update()方法
update()是字典的方法,用来将参数字典添加到调用方法的字典中。
语法格式:字典名.update(参数字典名)
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea1.update(dictArea2)
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
1.6.3 使用dict()函数
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> ls = list(dictArea1.items()) + list(dictArea2.items())
>>> ls
[('中国', 1500), ('法国', 1300), ('美国', 1200), ('英国', 1000), ('张三', 1100), ('李四', 1000), ('王五', 900), ('小阿丁', 500)]
>>> dictArea = dict(ls)
>>> dictArea
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
1.6.4 使用dict()函数的另一种形式
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea1 = dict(dictArea1,**dictArea2)
>>> dictArea1
{'中国': 1500, '法国': 1300, '美国': 1200, '英国': 1000, '张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
>>> dictArea2
{'张三': 1100, '李四': 1000, '王五': 900, '小阿丁': 500}
注意:一般来说,参加合并的两个字典中的键都是不同的,如果两个字典中出现了相同的键,那么合并后只会有一组包含改键的条目被保留下来。
二、集合的基本操作
2.1 添加元素
函数或方法:s,add(item) 或者s.update(item)
区别:s.add(item)将参数item作为元素添加到集合s中,如果item是序列,则将其作为一个元素整体加入集合。作为参数的item只能是不可变的数据。
s.update(item)将参数序列item中的元素拆分去重后加入集合。参数item可以是可变数据。
>>> s = {1,2,3}
>>> s.add((2,3,4))
>>> s
{1, 2, 3, (2, 3, 4)}
>>> s.add([2,3,4])
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> s = {1,2,3}
>>> s.update([2,3,4])
>>> s
{1, 2, 3, 4}
2.2 删除元素
函数或方法:s.remove(item) 或 s.discard(item) 或 s.pop() 或 s.clear()
>>> s = {1,2,3,4}
>>> s.remove(2)
>>> s
{1, 3, 4}
>>> s.remove(5)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 5
>>> s = {1,2,3,4}
>>> s.discard(3)
>>> s
{1, 2, 4}
>>> s.discard(5)
>>>
>>> s = {1,2,3,4}
>>> s.pop() //随机删除
1
>>> s = {1,2,3,4}
>>> s.clear()
>>> s
set()
2.3 成员判断
语法格式:item in s
2.4 集合的数学运算
2.4.1 求并集
运算符:A | B
方法:A。union(B)
>>> A = {1,2,3,4}
>>> B = {3,4,5,6}
>>> A|B
{1, 2, 3, 4, 5, 6}
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
>>> A.union(B)
{1, 2, 3, 4, 5, 6}
>>> B
{3, 4, 5, 6}
2.4.2 求交集
运算符:A & B
方法:A。intersection(B)
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
>>> A & B
{3, 4}
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
>>> A.intersection(B)
{3, 4}
2.4.3 求差集
运算符:A - B
方法:A.difference(B)
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
>>> A - B
{1, 2}
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
2.4.4 求对称差集
运算符:A ^ B
方法:A.symmetric_difference(B)
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
>>> A.symmetric_difference(B)
{1, 2, 5, 6}
>>> A
{1, 2, 3, 4}
>>> B
{3, 4, 5, 6}
Python之字典与集合的基本操作相关推荐
- python中字典和集合的区别_Python中字典和集合学习小结
映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表. ...
- python中可以作为定界符_在 Python 中,字典和集合都是用一对 作为定界符,字典的每个元素有两部分组成,即 和 ,其中 不允许重复。_学小易找答案...
[多选题]路由器A的G0/0/1接口配置信息如下,下列说法正确的有?(多选) acl number 3000 rule 5 deny 17 rule 10 deny 89 rule 15 deny 6 ...
- Python遍历字典、集合与函数
Python遍历字典.集合与函数 一.遍历字典 代码块 意义 keys() 该⽅法返回字典所有的key values() 该⽅法返回⼀个序列,序列中保存有字典的值 items() 该⽅法会返回字典中所 ...
- python字典和集合对象可以进行索引操作_建议收藏丨纯知识点:Python基础—字典、集合操作大全...
本文为纯知识点,预计需阅读二十分钟 数据结构基本上就是--它们是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的. 在Python中有四种内建的数据结构--列表.元组和字典,集合. ...
- python中字典和集合的界定符_python中的字典 和 集合
python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...
- python字典中append_零基础入手!Python中字典与集合的使用指南
全文共5092字,预计学习时长10分钟 本文将介绍Python的内置集合模块,用于支持集合和键值对等数学概念. 什么是集合? 集合是一组用于储存唯一值的序列. 初始化 可使用花括号{}定义集合. &g ...
- python中字典和集合对象是无序的_Python基础(四):元组、字典和集合
基础学习第四弹,常用对象:元组.字典和集合 一.元组 1.1 元组的应用场景 思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做? 答:列表?列表可以一次性存储多个数据,但是列表中的数据 ...
- 大学python教材实验七字典与集合答案_2018-08-28 day7 python基础 字典和集合(含作业)...
1.字典(dict) 一.字典是容器类型(序列 ),以键值对作为元素.字典里面存的数据全是以键值对的形式出现的 b/键值对----> 键:值(key:value) dict1 = {'key1' ...
- python的字典与集合
一.集合 集合(set)是一个无序的不重复元素序列.1,2,3,4,1,2,3 = 1,2,3,4 1.集合的创建 # 1. 集合的创建 s = {1, 2, 3, 1, 2, 3} # {1, 2, ...
最新文章
- android 比较两个list,比较两个List的内容是否相等
- fiddler抓取https的最终说明
- ros使用QT插件开发
- Jquery控制select实现dataTables数据联动刷新
- java考察代码_一段简单的关于字符串的 Java 代码竟考察了这么多东西
- 虐杀外星人java,逆天游戏《毁灭全人类2》登PS4 外星人疯狂虐杀地球人
- 同字母异序词 python_49. 字母异位次分组(Python)
- [Winodows Phone 7控件详解]Silverlight toolkit for Windows Phone 7.1控件-5
- sql 查询一个月的数据按天显示_数据分析-sql复杂查询
- 九九乘法表(Java)
- jieba库(jieba库的介绍以及分词原理,jieba的三种模式和常用函数,利用Jieba模块进行中文词语的统计)
- (转)(全程图解)Axure RP8.0安装、破解、汉化教程
- 计算机图形学概论论文5000字,关于计算机图形学探究的论文
- 令牌环 典型例题分析解答
- 小学计算机期末评价方案,小学班级管理评价方案
- c/c++ 实现三角函数(不使用库函数) sin/cos/tan/cot
- 【Java每日面试题】大厂是如何设计秒杀系统的,渣本Java开发小伙如何一步步成为架构师
- python标准差不用numpy_Python:Numpy标准差
- SysKey 和 SAM
- Win7/8双系统共用蓝牙鼠标