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 第三版——56. 为所有已公开的API元素编写文档注释

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

  2. 解决“错误为Lc.exe已退出,代码为-1”

    今天做项目的时候突然出现编译不通过,错误为Lc.exe已退出,代码为-1.网查了一下,原因是项目中使用了第三方组件(Developer Express v2011)造成的,分享如下:这个第三方组件是个 ...

  3. struts2 + urlrewrite 整合注意事项

    这几天业余时间在玩百度云,百度的云还是不错的,但是对于我这样的.NET程序员,有点不公平,没有.net虚机,不过也不是百度一家没有,基本都没有,有的都是那种开放云,自已在云端来部署安装软件的. 所以也 ...

  4. git笔记-9-29

    //将工作区的a.txt文件更新到最后一次提交到本地仓库的状态,如果需要将文件回滚到某个特定的版本,将HEAD改成那个commit的id即可 git checkout HEAD a.txt //如果将 ...

  5. .so.x不是符号连接

    去到这个目录下查看,会发现有多个.so.x文件.x是版本号的区别.将它们动态软连接在一起就可以了 参考这个博客

  6. SpringBoot普通类中如何获取其他bean例如Service、Dao(转)

    工具类 import org.springframework.beans.BeansException; import org.springframework.context.ApplicationC ...

  7. Java知多少(53)使用Java创建自己的异常子类

    尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况.这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwabl ...

  8. Spark学习笔记——文本处理技术

    1.建立TF-IDF模型 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.mllib.linalg. ...

  9. Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

  10. (转) at&T语法格式 与 at&T - intel格式对比

    原地址 示例: movl (%ebp), %eax, 等同于Intel格式中的 ] ,AT&T中,源操作数在左,目的操作数在右.“l”是Longword,相当于Intel格式中的dword p ...