Python 集合(Set)、字典(Dictionary)
集合(Set)
集合是无序的,无序也就没有索引,不能进行索引相关的操作。无序,python解释器就不能通过索引(位置)区分集合中的相同元素,所以集合中不能有相同的元素。
集合用大括号{ }表示。
集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。
a={1,1,3}
print(a) #{1,3} 会自动去掉重复的元素
a={1,"ok"} #数据类型可以不同
print(a) #{1, 'ok'}
a={1,"ok",[1,2]} #报错 集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。
print(a)
集合可以使用in、not in进行成员判断。
集合之间可以进行集合运算
a={1,2,3}
b={1,2,6}
print(a|b) #求并集 {1, 2, 3, 6}
print(a&b) #求交集 {1, 2}
print(a-b) #求差集(a中有,b中没有) {3}
print(a^b) #并集减去交集,即把a、b独有的元素组成一个集合 {3, 6}
| 是python的逻辑或,a或b,即并集
& 是python的逻辑与,a且b,a、b中都要有,即交集
python的逻辑运算符
- and、& 与
- or、| 或
- not 非(python中,逻辑非不能用!表示)
字典(Dictionary)
字典是无序的。
字典中一个键值对就是一个元素。因为是用key来标识元素,所以同一个字典中,key不能相同(不会报错,但后面的值会覆盖前面的值)。
字典中的key、value的数据类型可以不同,但key必须是不可变的数据类型,比如数字、字符串、元组。
字典用大括号{ }表示。
a={"name":"张三","age":18} #key、value之间冒号分隔,键值对之间逗号分隔
a={1:"张三","age":18,"score":(100,90,99)} #字典中的key可以是不同的类型,但key必须是不可变的数据类型。value可以是任何类型。
a={"name":"张三","name":"李四"} #key不能相同,相同时,后面的值会覆盖前面的值
print(a) #{'name': '李四'}
可通过key来操作字典中的元素
a={"name":"张三","age":12,}
print(a["name"]) #张三 如果key是数字、元组,以 字典变量名[数字|元组] 的方式操作,key不加引号,加引号表示key是字符串。
a["age"]=10 #如果key已存在,这是修改对应的值
a["score"]={"Chinese":90,"math":100} #如果key不存在,这是往字典中添加一个键值对
print(a) #{'name': '张三', 'age': 10, 'score': {'Chinese': 90, 'math': 100}}
del a["score"] #删除一个键值对
print(a) #{'name': '张三', 'age': 10}
a.clear() #清空字典,会删除所有的键值对,只保留一个空字典
print(a) #{}
del a #删除a这个变量
print(a) #报错
字典通过key来标识、区分元素,不需要索引,所以字典是无序的。
字典的常用函数
| 函数 | 描述 |
|
dict.keys() |
获取所有的key |
| dict.values() | 获取所有的value |
| dict.items() | 获取所有的键值对 |
| dict1.update(dict2) | 把dict2中的键值对全部添加到dict1中,dict1会改变,dict2不变。此函数返回值是void。 |
| dict.copy() |
复制,返回dict的一个副本。 |
| dict.clear() | 清空字典,删除所有键值对,只保留一个空字典 |
| dict.has_key(key) | 检测字典中是否有指定的key,返回bool值 |
| dict.get(key,default) | 获取key对应的value,若key不存在,返回指定的默认值 |
| dict.setdefault(key[,default]) | 和get(key,default)一样,只不过key不存在时,会先往字典中添加这个键值对,然后返回值 |
| dict.pop(key[,default]) | 删除key对应的键值对,并返回这个键值对中的value。若key不存在,返回设置的default的值。 |
| dict.popitem() | 删除字典中的最后一个键值对,并返回这个键值对中的value。虽然字典是无序的,但这个函数删除的确实是最后添加的一个键值对。 |
| dict.fromkeys(seq[,value]) |
创建并返回一个新字典。seq是序列,使用序列中的元素作为key,value可选,为所有键值对设置默认value。 这个函数比较特殊,前面的dict都是字典类的实例,调用的是实例方法。 在python中,dict是一个类,表示字典。fromkeys()是dict类的静态方法,直接通过类名调用。 |
字典是可变的,如果以上操作修改了字典,字典本身会改变。
copy()使用示例:
dict1={"name":"张三","age":18,"score":(100, 90, 99)}
dict2=dict1.copy()
print(dict2) #{'name': '张三', 'age': 18, 'score': (100, 90, 99)}
setdefault()使用示例:
dict={"name":"张三"}
print(dict.setdefault("age",18)) #
print(dict) #{'name': '张三', 'age': 18}
dict.fromkeys(seq[,value])使用示例:
a=[1,2,3] #列表
b=(1,2,3) #元组
c="ok" #字符串 #参数必须是序列 print(dict.fromkeys(a)) #{1: None, 2: None, 3: None}
print(dict.fromkeys(b)) #{1: None, 2: None, 3: None}
print(dict.fromkeys(c)) #{'o': None, 'k': None} #以序列中的元素作为key,字符串的元素是单个字符。
#为设置值时,默认值是None print(dict.fromkeys(a,"ok")) #{1: 'ok', 2: 'ok', 3: 'ok'} #设置的值是所有key的值。
#设置的值可以是任何类型
小结
1、python中,序列(字符串、列表、元组)是有序的,集合、字典都是无序的。
有序的就有索引,可进行索引相关的操作,可用索引来标识、区分元素,所以元素可重复。
集合中不能有重复的元素,字典中不能有重复的key。
2、数字、字符串、元组是不可变的,对它们操作,返回的往往是副本,本身不会改变。
列表、集合、字典都是可变的,对它们操作,往往就是对本身进行操作。
(python也提供了不可变的集合)
3、列表用[]表示,元组用()表示,列表、元组都有索引、可进行索引相关操作,区别是列表可改变,元组不可改变。
使用内置函数list()、tuple()可实现列表、元组的相互转换。
可以先把列表转换为元组,来保护列表中的元素不被修改,操作完再转换回列表。
可以把元组转换为列表,达到修改元组的目的,操作完再转换回元组。
4、集合、字典都是用{}表示,{}表示空字典,空集合要使用set()来创建。
5、字符串、列表、元组、集合、字典都具有多个元素,它们都可以使用python内置函数 len(x) 来获取x的元素个数。
6、类型转换
| 函数 | 描述 |
|---|---|
|
int(x [,base]) |
将x转换为一个[base进制的]整数,base可选,默认为10 |
|
float(x) |
将x转换为一个浮点数 |
|
complex(real [,imag]) |
创建一个复数,缺省imag时,虚部默认为0 |
|
str(x) |
将 x 转换为字符串 |
|
tuple(s) |
将序列 s 转换为一个元组 |
|
list(s) |
将序列 s 转换为一个列表 |
|
set(s) |
转换为集合 |
|
frozenset(s) |
转换为不可变集合 |
|
chr(x) |
将整数(ASCII码值)转换为字符 |
|
ord(x) |
将字符转换为数值(ASCII码值) |
返回的均是副本,不会修改参数本身。
格式:目标类型(需要转换的变量/值)
字符、ASCII码值转换示例:
print(chr(65)) #A
print(ord("A")) #
7、使用python的内置函数eval(str)可执行字符串中的python语句
eval("print(1)") #输出1
Python 集合(Set)、字典(Dictionary)的更多相关文章
- python 数据类型: 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary
#python中标准数据类型 字符串String 列表List 元组Tuple 集合Set 字典Dictionary 铭记:变量无类型,对象有类型 #单个变量赋值 countn00 = '; #整数 ...
- python集合与字典的用法
python集合与字典的用法 集合: 1.增加 add 2.删除 •del 删除集合 •discard(常用)删除集合中的元素 #删除一个不存在的元素不会报错 •remove 删除一个不存在的 ...
- python数据类型:字典Dictionary
python数据类型:字典Dictionary 字典是一种可变容器模型,可以存储任意类型对象 键是唯一的,但是值不需要唯一 值可以取任何数据类型,但是键必须是不可变的,如字符串,数字,元组 创建字典: ...
- Python——集合与字典练习
集合与字典练习question1问题描述:有一个列表,其中包括 10 个元素,例如这个列表是[1,2,3,4,5,6,7,8,9,0],要求将列表中的每个元素一次向前移动一个位置,第一个元素到列表的最 ...
- python学习之字典(Dictionary)练习
Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型 字典中分为键值对 , key 类型需要时被哈希. value 类型可以是 字符串.数字.元组等其他容器模 ...
- Python 集合、字典、运算符
先区分一下序列类型和散列类型: 序列类型:list.string.tuple,他们中的元素是有序的. 散列类型:set.dict,他们中的元素无序的. 序列类型有序,可以用索引.而散列类型中的元素是无 ...
- python 集合(set)和字典(dictionary)的用法解析
Table of Contents generated with DocToc ditctaionary and set hash 介绍 集合-set 创建 操作和访问集合的元素 子集.超集.相对判断 ...
- Python数据类型(字典和集合)
1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...
- [Python]字典Dictionary、列表List、元组Tuple差异化理解
概述:Python中这三种形式的定义相近,易于混淆,应注意区分. aDict={'a':1, 'b':2, 'c':3, 'd':4, 'e':5} aList=[1,2,3,4,5] aTuple= ...
随机推荐
- history.back(-1)和history.go(-1)的区别 (有错误)
返回一个页面方法有很多,就好比给返回按钮绑定一个URL,但是如果一个页面可以从很多页面到达,那么这个页面返回的页面就不是固定的,那么绑定固定的URL显然不妥. 两个方法的区别 既然history.ba ...
- mysql数据库锁的机制-及事务事件
事务隔离级别,脏读.不可重复读.幻读,乐观锁.悲观锁(共享锁.排它锁) 数据库事务具有四个特征,分别是原子性(Atomicity).一致性(Consistency).隔离性(Isoation).持久性 ...
- 提高 Visualforce 页面加载效率的小知识
一般原则 在设计页面时,我们要将页面的功能降至最少,不要包含多余的功能和数据,以最大化提高运行效率 如果需要开发的功能可以通过 Salesforce 的标准功能实现,那么尽量使用标准功能,比如 工作流 ...
- 7.Go退出向Consuk反注册服务,优雅关闭服务
注册和反注册代码 package utils import ( consulapi "github.com/hashicorp/consul/api" "log" ...
- 八大排序算法总结与java实现(转)
八大排序算法总结与Java实现 原文链接: 八大排序算法总结与java实现 - iTimeTraveler 概述 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 ...
- django -- 模版语言之过滤器Filters和for循环
前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} ...
- MQ异步同步搜索引擎ElasticSearch数据踩坑
业务背景 在大型网站中,为了减少DB压力.让数据更精准.速度更快,将读拆分出来采用搜索引擎来为DB分担读的压力,ElasticSearch就是目前市面上比较流行的搜索引擎,他的检索速度奇快.支持各种复 ...
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了(持续更新)
前面的文章中,一直在强调2019系列的idea无法使用补丁进行永久激活,但是最近发现,已经有大佬可以利用补丁将idea 2019.2及以下版本激活到2089年了,而且还不用改hosts,实在是佩服,不 ...
- Golang(二)基本概念
类型 18个基本类型:bool.string.rune.byte.int.uint.int8.uint.int8.int16.uint16.int32.uint32.int64.uint64.floa ...
- .net core 运行不需命令行
1.问题情景: 需要保证已安装.net core SDK,并且命令提示符下运行“dotnet --version”,有反应. 如果之前运行良好,现在却不行了,查看安装程序中存在.net core SD ...