python里的字典和集合
一.字典
1.字典的定义
字典是不可变的,是用hash值来存储的.字典的key必须是不可变的(可哈希)
dict = {key1:value1 , key2:value2}
2.字典的增删改查
增
直接dict[newkey]="newvalue"
dict.setdefault("key","value")
setdefault执行流程:
判断你的key是否存在,如果已经存在就不再新增.如果不存在,执行新增操作
dic = {"jay":"周杰伦","jj":"林俊杰"}
dic["j"] = "我也不知道" #dic[newkey] = "newvalue"
#dic.setdefault("j","我也不知道")
print(dic)
删
dict.pop("key") 指定删除key和对应的value
dict.popitem() 从后往前删 在早期字典是无序的,所以早期是随机删除
del dict[key] 指定删除key和对应的value
dict.clear() 清空字典
dic = {"张艺谋":"红高粱","李安":"断背山","陈凯歌":"霸王别姬"}
dic.pop("张艺谋") #指定删除
dic.popitem() #删除最后一个 python早期版本是无序的
del dic["李安"] #指定删除
dic.clear() #清空
print(dic)
改
dict[oldkey] = newvalue
dict1.update(dict2) #把dict2的内容更新到dict1中
查
直接使用key就能查到value
dict.get(key,None) 当key存在查询value,不存在返回None(None可以自定义)
dict.setdefalut() 第一个功能是添加(当key不存在).第二个功能是查询(当key存在)
setdefalut整个执行流程:
判断给的key是否存在. 如果存在. 就不执行新增流程.直接查询出这个key对应的value
如果key不存在. 先执行新增操作. 再使用key把对应的value查询出来
dic = {"刘能":"王小利","赵四":"刘晓光","王木生":"范伟"}
print(dic["刘能"])
print(dic.get("王木生"))
print(dic.get("刘能呢","没有"))
setdefault 两个功能 添加和查找
检查是否有key 如果没有,先添加到字典,再使用key查询value
如果有key,直接查询key的valu
s = dic.setdefault("赵四四","流光")
print(s)
3.字典的嵌套
一层一层寻找,和列表一样
4.字典的遍历
直接for循环
for key in dic: # 直接循环字典拿到的是key, 有key直接拿value
print(key)
print(dic[key])
dict.keys() 拿到字典的每一个key
dict.values() 拿到字典的每一个value
dict.items() 拿到字典的所有键值对
for k, v in dic.items(): # 遍历字典最简单的方案
print(item) # ('赵四', '刘晓光')
k, v = item # 解构
k = item[0]
v = item[1]
print(k, v)
遍历字典的两种方法:
dic = {"周五":"等着放假","周六":"放假","周日":"等着上课"}
#遍历字典的两种方法
for i in dic:
print(i,dic[i]) # i是遍历到的key dic[i]是对应的value
for k,v in dic.items(): #dic.items()
拿到的是[('周五', '等着放假')]
解包
print(k,v)
二.set集合
集合是无序的,不可重复的数据集合,集合里面的每个元素必须是可哈希的(不可变的数据类型),但是集合是不可哈希的,所以集合做不了字典的键
1.set集合的用处
用的最多的就是去重复
lst = ["麻将", "牌九", "骰子", "扑克", "骰子", "扑克", "扑克", "扑克", ]
print(list(set(lst)))
2.set集合的增删改查
增
s.add(元素) 直接添加 set是无序的
s.update() 迭代添加
s = {"刘嘉玲","赵本山","罗纳尔多","剑神"}
s.add("剑圣")
s.update("剑圣") #迭代添加
s.update(["剑圣"]
删
s.pop() 随机删除一个
s.remove(元素) 指定删除一个
s.pop() #因为set是无序的 ,所以随机删. ()里没有arg
s.remove("剑神") #指定删
改
只能先删除再添加
查
可迭代,用for循环
python里的字典和集合的更多相关文章
- Python中的字典与集合
今天我们来讲一讲python中的字典与集合 Dictionary:字典 Set:集合 字典的语法: Dictionary字典(键值对) 语法: dictionary = {key:value,key: ...
- Python基础__字典、集合、运算符
之前讨论的字符串.列表.元组都是有序对象,本节则重点讨论无序对象:字典与集合.一.字典 列表是Python中的有序集合,列表中的序指的是列表中的元素与自然数集形成了一个一一对应的关系.例如L=['I' ...
- Python数据类型(字典和集合)
1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...
- [19/09/19-星期四] Python中的字典和集合
一.字典 # 字典 # 使用 {} 来创建字典 d = {} # 创建了一个空字典 # 创建一个保护有数据的字典 # 语法: # {key:value,key:value,key:value} # 字 ...
- python基础之字典、集合
一.字典(dictionary) 作用:存多个值,key-value存取,取值速度快 定义:key必须是不可变类型,value可以是任意类型 字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分 ...
- python大法好——字典、集合
字典 前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用.字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下 ...
- python中的字典 和 集合
python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...
- Python中的字典和集合
一.字典(dict) 1. 概述 字典是Python唯一的映射类型. 只能使用不可变的对象(比如字符串)来作为字典的键,但是可以把不可变或可变的对象作为字典的值. 键值对在 ...
- python初识数据类型(字典、集合、元组、布尔)与运算符
目录 python数据类型(dict.tuple.set.bool) 字典 集合 元组 布尔值 用户交互与输出 获取用户输入 输出信息 格式化输出 基本运算符 算术运算符 比较运算符 逻辑运算符 赋值 ...
随机推荐
- 侯捷STL课程及源码剖析学习2: allocator
以STL 的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container)的背后,默默工作默默付出. 一.分配器测试 测试代码 #include < ...
- TOJ 4976: 新生数(深搜)
传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=4976 时间限制(普通/Java): ...
- PHPlaravel中从数据库中选择数据是增加时间条件及各种条件
注:附加条件后要加get函数. 1.public function getForDataTable($startTime,$endTime){ return $this->query() -&g ...
- JDBC、ODBC、OLE DB、ADO、ADOMD区别与联系
ODBC: (Open Database Connectivity,开放数据库互连),它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用SQL来完成其大部分任务 ...
- 【linux】常见问题&常用命令笔记
1.重启以及关机命令: Linux centos重启命令: (1)reboot 普通重启 (2)shutdown -r now 立刻重启(root用户使用) (3)shutdown -r 10 过 ...
- Django具体操作(三)
理解表单类:上一篇中讲到了用户登录代码实现,用户登录框可以用HTML代码实现或者是表单实现. 在.个人的app下创建forms.py(这里很多人会写成from) 这个文件是专门存放各种与表单有关的类. ...
- Data01-数据结构和算法绪论
Data01-数据结构和算法绪论 一.数据结构和算法绪论 1.1 什么是数据结构? 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科. 程序设计=数据结 ...
- MyBatis代理开发(2)
一.开发步骤和程序代码 1.程序员需要编写user.xml映射文件,程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象. 2.创建数据库配置文件 ...
- solr简介、学习详细过程!(超详细~)
solr是什么呢? 一.Solr它是一种开放源码的.基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中. 二.Solr 提供了层面搜索(就是统计).命中醒目显示并且支持多种输出 ...
- ThreadExecutorPool 线程池组件
ThreadExecutorPool是使用最多的线程池组件: Executor是用来执行提交的Runnable任务的对象,并以接口的形式定义,提供一种提交任务(submission task)与执行任 ...