一.字典

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. JavaScript oop proto与prototype原型图

    [_proto_与prototype] 1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址. 2._proto_(对象的原型对 ...

  2. ASP.Net MVC 中EF实体的属性取消映射数据库、自定义名称

    例如:数据库中一个字段名称为CompanyId 自定义实体数据名称 [Column("CompanyId")] public int Id{ get; set; } 这样就可以使用 ...

  3. vue 登录前做校验this.$router.push(location)

    有很多按钮在执行跳转之前,还会执行一系列方法,这时可以使用 this.$router.push(location) 来修改 url,完成跳转 例如:登录按钮,点击时需要先判断验证码等是否正确,此时

  4. Instrumentation类——Android自动化测试学习历程

    这里需要把Instrumentation类的视频的上.中.下三集一起看,把内容总结一下... 视频地址: http://study.163.com/course/courseLearn.htm?cou ...

  5. 【git】日志提交规范

    我自己总结的规范: feature: 功能添加bugfix: bug修复change: 调整,比如配置,某些方法替换等optimize: 优化过程doc: 文档变更refactor: 重构,功能不变t ...

  6. Redis能干啥?细看11种Web应用场景[转]

    下面列出11种Web应用场景,在这些场景下可以充分的利用Redis的特性,大大提高效率. 1.在主页中显示最新的项目列表. Redis使用的是常驻内存的缓存,速度非常快.LPUSH用来插入一个内容ID ...

  7. 好文:javascript中的四种循环

    https://juejin.im/entry/5a1654e951882554b8373622?utm_medium=hao.caibaojian.com&utm_source=hao.ca ...

  8. C#字符串长度判断

    string aaa = "你好123"; Label1.Text = aaa.Length.ToString();  //结果5 Label2.Text = System.Tex ...

  9. ABAP中不修改内表参照的结构,给内表/结构体增加字段

    Situation: DATA:       itab  TYPE STANDARD TABLE OF zsrsodtla_stru1,      wa_itab TYPE zsrsodtla_str ...

  10. BCH/BCHABC/BCHSV分叉后重放机制小结

    1. 不过,在谈重放保护之前,我们需要先了解一下重放攻击(又称重播攻击.回放攻击).实际上,重放攻击在互联网行业里就有过出现,也是计算机世界黑客最常用的攻击方式之一,它是指攻击者发送一个目的主机已接收 ...