[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. MVC+EFCore 完整教程18 -- 升级分布视图至 View Component

    之前我们详细介绍过分布视图(partial view),在有一些更加复杂的场景下,.net core为我们提供了更加强大的组件 view  component, 可以认为view component是 ...

  2. Git学习笔记 (二)

    Git学习笔记(二) 突然发现,学习新知识新技能,都得经常温故使用,这样才能日益精进.最近学习的Git是因为加入了课题组,在学习做一些后台,由于后台开发会牵扯到多人开发,所以学会Git这一代码管理工具 ...

  3. 【TensorFlow 3】mnist数据集:与Keras对比

    在TF1.8之后Keras被当作为一个内置API:tf.keras. 并且之前的下载语句会报错. mnist = input_data.read_data_sets('MNIST_data',one_ ...

  4. jsp数据交互(二).1

    对象的作用域:   JSP中提供了四种作用域,分别是page作用域,request作用域,session作用域和application作用域. page作用域: page作用域指单一JSP页面的范围, ...

  5. Java计时新姿势

    为获得更好的阅读体验,请访问原文:传送门 前言: 最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时 的新姿势「StopWatch」,赶紧来一起了解了解吧! 一.最简单的计时 在我们的程序中不 ...

  6. CentOS7 部署K8S集群

    虚拟机:   VMware® Workstation 12 Pro 12.5.9 build-7535481操作系统:CentOS Linux release 7.6.1810 (Core)   部署 ...

  7. 基于ReentrantLock的非公平锁理解AQS

    AQS AQS概述 ​ AbstractQueuedSynchronizer抽象队列同步器简称AQS,它是实现同步器的基础组件,juc下面Lock的实现以及一些并发工具类就是通过AQS来实现的,这里我 ...

  8. 游戏开发3D基础知识

    概念学习: 向量 向量简介 我们将所有彼此平行的向量进行平移,使其起点与坐标原点重合,当某一向量的起始端与坐标原点重合,我们成该向量处于标准位置.这样,我们就可用向量的终点坐标来描述一个处于标准位置的 ...

  9. Confluence未授权模板注入/代码执行(CVE-2019-3396)

    --- title: Confluence未授权模板注入/代码执行(CVE-2019-3396) tags: [poc,cve] num :g7y12 --- # 简介 --- Confluence是 ...

  10. 定时延时设计FPGA

    以50MHZ时钟为例,进行1秒钟延时,并输出延时使能信号. 首先计算需要多少次计时,MHZ=10的六次方HZ.T=20ns 一秒钟需要计时次数为5的七次方即5000_0000. 然后计算需要几位的寄存 ...