[TOC]

字典——dict { }

字典是无序,可变的数据类型。

字典:用于存储数据,存储大量数据,字典要比列表快;将数据和数据之间进行关联。

1. 定义:

 dic = {键:值,键:值}  #每个 键值对 以逗号分隔成一个元素

字典的值: 可以是任意的数据类型。

字典的键:必须是可哈希的——不可改变的数据类型;要求键唯一,如果有重复的,则后面的值会把前面的值覆盖掉。

(注:可哈希的 -- 不可变的数据类型(数字、字符串、布尔值) -- 避免哈希冲突使用了 “开放寻址法” )

(不可哈希的 -- 可变的数据类型 (列表、字典) )

2. 增:

 dic = {"a":10,"b":20,"c":30}
 ​
 dic["键"] = 值  # 暴力添加
 dic["d"] = 40
 ​
 dic.setdefault(键,值)  # 通过键去字典中查询,如果键不存在执行添加,如果键存在则不会添加
 dic.setdefault("c",40)    # "c" 存在,不添加
 dic.setdefault("f",40)    # "f"不存在,添加到字典

3. 删:

 del dic["a"]    # 通过字典的键,删除键值对
 dic.pop("b")    # 通过字典的键,删除键值对,有返回值,返回的是被删除的值
 dic.clear()     # 清空字典

4. 改:

 dic["b"] = 200   #字典中没有此键值对的时候就是添加,当键在字典中存在的时候就是修改    # "有则改,无则加"
 dic.update(dic1) # 更新,里面必须放字典。update括号中的字典(dic1)级别高于前面的字典(dic)
                  # 运行:先将具有相同键的内容覆盖,再在字典末尾添加dic没有的键值对

5. 查:

 for i in dic:
     print(i)     # for 循环获取的是键值对的键
 ​
 dic.get(键)    # 通过键获取值,如果键不存在字典中会返回 None
 dic[键]        # 通过键获取值,如果键不存在字典中会报错!

6. 其他操作:

 dic = {"a":1,"b":2,"c":3}
 ​
 # 1.
 for i in dic:
     print(i,dic.get(i))   # 循环输出所有的键和值 a 1   b 2   c 3
 ​
 # 2. keys() 所有的键
 print(dic.keys())  # 高仿列表,获取的是字典中所有的键   -- dict_keys(['a', 'b', 'c']) 支持for循环 不支持索引
 ​
 for i in dic.keys():
     print(i)        # 循环输出所有的键 a b c
     
 print(dic.keys()[0]) # 报错 'dict_keys' object does not support indexing(不支持索引)
 ​
 # 3. values() 所有的值
 print(dic.values())  # 高仿列表,获取的是字典中所有的值 ——dict_values([1, 2, 3])
 print(list(dic.values()))   # 获取的是字典中所有的值,转换成 真的列表
 ​
 # 4. items() 所有的键和值
 print(dic.items())  # 高仿列表,获取的是字典中所有的键和值,存放在元组中 ——dict_items([('a', 1), ('b', 2), ('c', 3)])
 ​
 for i in dic.items():
     print(i[0],i[1])  #将键和值从元组中循环打印出 a 1   b 2   c 3
 ​
 # 5. 将字典中的值放到列表中
 lst = []
 for i in dic:
     lst.append(dic[i])
 print(lst)

7. 解构:

 a = 10
 b = 20
 a,b = b,a
 print(a,b)   # 实现a,b数字的交换,列表、元组都可以
 ​
 a,_,b = (3,4,5)
 print(a,b)   # 3 5 等号后边的值和前面的变量名要一一对应(假如只要a,b)
 ​
 a = 10,12  # 本质就是一个元组
 print(a)   # (10,12)
 ​
 a,b = "23"
 print(a,b)   # 2 3
 ​
 a,b = {"1":"a","2":"b"}
 print(a,b)    #输出 1 2(键)
 ​
 for i in dic.items():
     print(i)    # 获取的是每个元素,结果:(键,值)
     
 for k,v in dic.items():
     print(k,v)    # 获取每个元素的键和值

8. 字典的嵌套:

查找的时候一次一次的通过键查找。

dic[键]

 dic = {1001:["周杰伦","林俊杰"],
        1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}}}
 print(dic[1002]["汪峰"]["前妻2"][1])   # 熊二

python 05 字典的更多相关文章

  1. python 05—字典

    一.字典的键是唯一的 键:简单对象,例[字符串.整数.浮点数.bool值] list不能作为键,但可以作为值. 例: score = { '萧峰' : 95, '段誉' : 97, '虚竹' : 89 ...

  2. python --- 05 字典 集合

    一.字典 可变数据类型 {key:value}形式   查找效率高   key值必须是不可变的数据类型 1.增删改查 1).增    dic["新key"] = "新va ...

  3. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  4. Python的字典

    1.  Python的字典 1.1.  字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...

  5. Python的字典和JSON

    Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...

  6. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...

  7. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

  8. python有序字典OrderedDict()

    转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...

  9. python:字典嵌套列表

    Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...

随机推荐

  1. 学习git使用网址

    如何将本地项目上传到Github (随梦飞翔) https://www.cnblogs.com/smfx1314/p/8426115.html git学习 GUI https://blog.csdn. ...

  2. spring applicationContext.xml文件移到resources目录下

    SpringMVC的框架默认目录结构 修改后的目录结构及web.xml 同时在pom里的配置:将resources目录打包到web-inf/classes目录下<resources>   ...

  3. Python 学习笔记(1)Python容器:列表、元组、字典与集合

    Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者 list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list( ...

  4. linux初学者-CIFS网络文件系统篇

    linux初学者-CIFS网络文件系统篇 CIFS是一种通用网络文件系统,主要用于网络设备之间的文件共享.CIFS可以在linux系统和windows系统之间共享文件,因此这种文件系统主要用于客户端是 ...

  5. vue.js带复选框表单的增删改查

    近段时间由于公司项目要求,前端开始使用VUE框架进行开发,最近刚开始学习,做了一个表单的增删改查,和大家分享一下. 页面模型代码设计如下 <template> <div id=&qu ...

  6. SpringBoot日志相关

    SpringBoot使用的是SLF4j当门面,Logback当实现完成 日志级别 数字越大,级别越高,框架只会输出大于等于当前日志级别的信息 ERROR 40 WARN 30 INFO 20 DEBU ...

  7. xpath beautiful pyquery三种解析库

    这两天看了一下python常用的三种解析库,写篇随笔,整理一下思路.太菜了,若有错误的地方,欢迎大家随时指正.......(conme on.......) 爬取网页数据一般会经过 获取信息-> ...

  8. 武林 HDU - 1107

    题目链接:https://vjudge.net/problem/HDU-1107 注意:题目中只有两个不同门派的人在同一个地方才能对决,其他情况都不能对决. 还有,这步的有效的攻击只有走到下一步之后才 ...

  9. java8(1)--- lambda

    项目马上切java8了,之前对于java8的东西都是东打一棒西打一锤的了解了些.这次搜集整理了下,从lambda到stream相关的API等. 1.Lambda和匿名内部类 Lambda 是一个匿名的 ...

  10. QT动画时间轴控制 QTimeLine

    QTimeLine类提供用于控制动画的时间轴 比如控制进度条的增长,图片,窗口的旋转,平移等等 QTimeLine有一个frameChanged(int)信号 当调用QTimeLine::start( ...