1, 判断是不是列表

li = ['lis3a', 'mary', 'lucy', 'hh', 'kk', 'gg', 'mm', 'oo', 'vv']
if type(li) == list:
print("list")

2,字典的key必须是不可变数据类型,也就是bool,int,str,tuple,value可以是任意的数据类型,有点二分查找去查询,存储大量的键值对,特点是无序的,3.5以前版本

3,字典的增加与修改方式,没有的添加,有的覆盖

dict1 = {"name":"lisa","age":"","hobby":"piano"}
dict1["height"]="" #没有的添加进去
dict1["name"]="mary" #有的覆盖,就相当于修改了
print(dict1) 运行结果:
{'name': 'mary', 'age': '', 'hobby': 'piano', 'height': ''}

4,添加的另外一种方式setdefault

dict1 = {"name":"lisa","age":"","hobby":"piano"}

dict1.setdefault("hometown") # 不设置value默认为None
print(dict1) dict1.setdefault("name") # 本来有的不会更新
print(dict1) dict1.setdefault("gender","female") # 设置了value
print(dict1) dict1.setdefault(,True) # 支持很多数据类型,详见上一条
print(dict1)

5,删除,pop函数,必须制定key,不指定会报错,制定成value也会报错,制定的不存在的key 也会崩溃

dict1 = {"name":"lisa","age":"","hobby":"piano"}
print(dict1.pop()) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
print(dict1.pop())
TypeError: pop expected at least arguments, got dict1 = {"name":"lisa","age":"","hobby":"piano"}
print(dict1.pop(“name”)) 运行结果:
lisa
dict1 = {"name":"lisa","age":"","hobby":"piano"}
print(dict1.pop("gender")) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line , in <module>
print(dict1.pop("gender"))
KeyError: 'gender'
dict1 = {"name":"lisa","age":"","hobby":"piano"}
print(dict1.pop("gender",None))
# 这个可以专门用来表示没有这个key时候的返回值,或者提示“没有此键”,等也用来防止程序崩溃
运行结果:
None

6,删除的另外一种popitem ,不需要参数,3.5以前随机删除,3.5以后是最后一个

7,del函数可以删除摸一个,或者删除整个dict,这个和列表类似

8,清空字典,clear函数,这个也和字典类似

9,改,update函数

dict1 = {"name":"lisa","age":"","hobby":"piano"}
dict2 ={'name':"mary","gender":"female"}
dict2.update(dict1)
print(dict1)
print(dict2)
#用dict1来更新dict2,没有的添加,有的更新value 运行结果:
{'name': 'lisa', 'age': '', 'hobby': 'piano'}
{'name': 'lisa', 'gender': 'female', 'age': '', 'hobby': 'piano'}

10,查,区分,value,key,item

dict1 = {"name":"lisa","age":"","hobby":"piano"}
print(dict1.keys())
print(dict1.values())
print(dict1.items()) 运行结果:
dict_keys(['name', 'age', 'hobby'])
dict_values(['lisa', '', 'piano'])
dict_items([('name', 'lisa'), ('age', ''), ('hobby', 'piano')])
dict1 = {"name":"lisa","age":"","hobby":"piano"}
for i in dict1: # 默认输出的是key和下一句效果是一样的
print(i) for i in dict1.keys():
print(i) 运行结果:
name
age
hobby
name
age
hobby

11,穿插点字典以外的知识点:

a,b,c =1,2,3
print(a,b,c)
a,b = b,a
print(a,b,c) 运行结果:
1 2 3
2 1 3
a,b = [1,2]
print(a,b)
a,b =[1,2],[3,4]
print(a,b)
# 永远按照最小的单位进行拆包
运行结果:
1 2
[1, 2] [3, 4]

12,iterm打印出来的是元祖,可以进行拆包赋值给k,v

dict1 = {"name":"lisa","age":"","hobby":"piano"}
for i in dict1.values():
print(i) for i in dict1.items():
print(i) for k,v in dict1.items():
print(k,v) 运行结果:
lisa
22
piano
('name', 'lisa')
('age', '')
('hobby', 'piano')
name lisa
age 22
hobby piano

13,查,两种,首选get函数,因为不存在是不会崩溃

v1 = dict1.get("name")
print(v1) v1 = dict1.get("name1")
print(v1) v1 =dict1.get("name1","没有此键")
print(v1) 运行结果:
lisa
None
没有此键
dict1 = {"name":"lisa","age":"","hobby":"piano"}
v1 =dict1["name"]
print(v1) 运行结果:
lisa dict1 = {"name":"lisa","age":"","hobby":"piano"}
v1 =dict1["name1"]
print(v1) 运行结果:
Traceback (most recent call last):
File "/Users/guolixiao/PycharmProjects/lisa's_practise/boys/5.1_dict.py", line 82, in <module>
v1 =dict1["name1"]
KeyError: 'name1'

14,一道练习题

str1 ="hiohph65nooihoh89nlohiolh76nklnl4"
# 找出里面有多少个数字,65算一个,89算一个
for i in str1:
if i.isdigit():
break
else:
str1 = str1.replace(i," ") #用空格替换非数字,这里一定要把新生成的字符串赋值回去 l = str1.split()
print(len(l)) 运行结果:
4

day5:字典dict的更多相关文章

  1. day5 字典 dict

    数据类型划分:可变数据类型,不可变数据类型不可变数据类型:元组,数字,布尔,str, == 可哈希可变数据类型:list , dict, set == 不可哈希dict的 key 必须是不可变数据类型 ...

  2. python中几个常见的黑盒子之“字典dict” 与 “集合set”

    这里说到"字典dict" 和 "集合set"类型,首先,先了解一下,对于python来说,标准散列机制是有hash函数提供的,对于调用一个__hash__方法: ...

  3. Python中的元组(tuple)、列表(list)、字典(dict)

    -------------------------------更新中-------------------------------------- 元组(tuple): 元组常用小括号表示,即:(),元 ...

  4. python中字典dict的操作

    字典可存储任意类型的对象,由键和值(key - value)组成.字典也叫关联数组或哈希表. dict = {' , 'C' : [1 , 2 , 3] } dict['A'] = 007 # 修改字 ...

  5. python中的字典(dict),列表(list),元组(tuple)

    一,List:列表 python内置的一种数据类型是列表:list.list是一种有序的数据集合,可以随意的添加和删除其中的数据.比如列出班里所有的同学的名字,列出所有工厂员工的工号等都是可以用到列表 ...

  6. Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  7. Redis的字典(dict)rehash过程源代码解析

    Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Re ...

  8. python基础之字典dict和集合set

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7043642.html python基础之字典dict和集合set 字典dic ...

  9. 自学Python2.4-基本数据类型-字典dict(objct)

    Python dict方法总结 一.字典介绍 1.字典概述 ①字典是python中唯一内建的映射类型.又称关联数组或散列②映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关 ...

随机推荐

  1. Effective Java 第三版——55. 明智而审慎地返回Optional

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  2. 译:9.使用Redis进行消息传递

    本指南引导您完成使用Spring Data Redis发布和订阅通过Redis发送的消息的过程.Messaging with Redis 1. 我们将构建什么? 您将构建一个使用StringRedis ...

  3. Atitit 常见每日流程日程日常工作.docx v4

    Atitit 常见每日流程日程日常工作.docx v4 ----早晨 签到 晨会,每天或者隔天 每日计划( )项目计划,日常计划等. mailbox读取检查 每日趋势 推库 -----下午 签退 每日 ...

  4. sublime text 3 安装卸载插件和取消启动检查更新

    1.Perferences->Package Contro,输入install 调出 Install Package 选项并回车 2.安装相应的插件 2.点击首选项–设置(用户) 3.卸载插件 ...

  5. 关于Python打包运行的一些思路

    需求 本地开发python django应用程序,然后放到生产环境运行.使用了tensorflow,手动安装包很麻烦.生产环境不能联网,不能使用 pip freeze. 思路: 使用docker,直接 ...

  6. django 同步数据库出现 No changes detected 的可能原因

    在使用 python manage.py makemigrations时候会出现:No changes detected 的错误. 造成这个错误的原因可能有很多. 我这里遇到这个错误的原因是:migr ...

  7. [Model] VGG16

     Jeff: fast.ai lesson 1&2感觉没讲什么干货. ~/keras/keras.json配置后台theano or tensorflow. ~/./theanorc处理器配置 ...

  8. 【代码审计】XYHCMS V3.5任意文件下载漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  9. redis aof和rdb区别

    转自https://blog.csdn.net/m0_38110132/article/details/76906422 1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由 ...

  10. 【Important】数据库索引原理

    为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入.修改.删除变慢? 什么情况下要同时在两个字段上建索引? 想理解索引原理必须清楚一种数据结构(平衡树非二叉)也就是b tre ...