一.字典

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里的字典和集合的更多相关文章

  1. Python中的字典与集合

    今天我们来讲一讲python中的字典与集合 Dictionary:字典 Set:集合 字典的语法: Dictionary字典(键值对) 语法: dictionary = {key:value,key: ...

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

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

  3. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  4. [19/09/19-星期四] Python中的字典和集合

    一.字典 # 字典 # 使用 {} 来创建字典 d = {} # 创建了一个空字典 # 创建一个保护有数据的字典 # 语法: # {key:value,key:value,key:value} # 字 ...

  5. python基础之字典、集合

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

  6. python大法好——字典、集合

    字典 前面我们说过列表,它适合于将值组织到一个结构中并且通过编号对其进行引用.字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下 ...

  7. python中的字典 和 集合

    python中字典是一种key-value的数据类型 字典的特性: 1.无序的 2.key必须的唯一的,so,字典天生去重 语法: 增加 修改 删除 查找 多级字典嵌套及操作 字典的其他用法 #set ...

  8. Python中的字典和集合

    一.字典(dict)      1. 概述          字典是Python唯一的映射类型. 只能使用不可变的对象(比如字符串)来作为字典的键,但是可以把不可变或可变的对象作为字典的值. 键值对在 ...

  9. python初识数据类型(字典、集合、元组、布尔)与运算符

    目录 python数据类型(dict.tuple.set.bool) 字典 集合 元组 布尔值 用户交互与输出 获取用户输入 输出信息 格式化输出 基本运算符 算术运算符 比较运算符 逻辑运算符 赋值 ...

随机推荐

  1. 牛客练习赛43-F(简单容斥)

    题目链接:https://ac.nowcoder.com/acm/contest/548/F 题意:简化题意之后就是求[1,n]中不能被[2,m]中的数整除的数的个数. 思路:简单容斥题,求[1,n] ...

  2. enlarge your dataset

    列举常见的几种数据集增强方法: 1.flip  翻折(左右,上下) # NumPy.'img' = A single image. flip_1 = np.fliplr(img) # TensorFl ...

  3. c#: UrlDecode()

    1.源起: KV需要解析从插件传来的URL网址,因为其可能经过编码,所以需要解码. 初用System.Web.HttpUtility.UrlDecode()这个函数,但根据用户环境crash场景,发现 ...

  4. akuna capital oa

    记得截图没过的test case啊!否则连复习改bug的证据都没了啊!!! 其实也不一定非得要拿面试来测试,做做lc的contest,看看自己哪里不会,也是一样的效果. 注意是单选题还是多选题 has ...

  5. day 24 socket 黏包

    socket 套接字的使用: tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server 端 import socket sk = socket.socket() # 实例化一个 ...

  6. 在threejs中对3D物体旋转的思考

    今天在写threejs时,突然想到一个问题:一个3D物体需要旋转时,一般情况下简单的旋转我都是使用欧拉角,稍微复杂一些的情况我会把欧拉角转换成四元数进行旋转(欧拉角复杂旋转可能会产生的死锁问题),但是 ...

  7. Ubuntu安装时没注册root用户密码,怎么登录root

    一.其实我个人认为这没有多大必要,因为当你需要 root 的权限时,使用 sudo 便可以了.如果你实在需要在 Ubuntu 中启用 root 帐号的话,那么不妨执行下面的操作: 1.重新设置 roo ...

  8. 16.Mysql SQL Mode

    16.SQL Mode及相关问题SQL Mode定义了Mysql支持的SQL语法和数据校验级别,Mysql支持多种SQL Mode.用途: 设置不同的SQL Mode可以对数据进行不同严格程度的校验, ...

  9. hdu 1026(BFS+输出路径) 我要和怪兽决斗

    http://acm.hdu.edu.cn/showproblem.php?pid=1026 模拟一个人走迷宫,起点在(0,0)位置,遇到怪兽要和他决斗,决斗时间为那个格子的数字,就是走一个格子花费时 ...

  10. Mike and strings 798B

    B. Mike and strings time limit per test 2 seconds memory limit per test 256 megabytes input standard ...