[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. tar 命令详解(持续更新)

    可以用man tar查看tar命令使用的权威解释 Main operation mode: -c: 建立压缩档案 -r:向压缩归档文件末尾追加文件 -t:查看内容 -u:更新原压缩包中的文件 -x:解 ...

  2. 神奇的 SQL 之 CASE表达式,妙用多多 !

    前言 历史考试选择题:黄花岗起义第一枪谁开的? A宋教仁 B孙中山 C黄兴 D徐锡麟,考生选C. 又看第二题:黄花岗起义第二枪谁开的? 考生傻了,就选了个B. 接着看第三题:黄花岗起义中,第三枪谁开的 ...

  3. 实现跳转的jsp小例子

    <%@page import="java.io.UnsupportedEncodingException"%> <%@ page language="j ...

  4. web设计_7_页面缺失图片或CSS的情况下仍然易读

    1. 在任何可能使用背景图片的地方应设置同样的颜色的背景色. 防止图片不能加载的情况下,页面内容同样保持较好可读性. 例如文字为白色,背景图为深色,如果不设置背景色,当背景图未成功加载, 而浏览器多数 ...

  5. HTTP_5_通信数据转发程序:代理、网关、隧道

    HTTP通信时,除客户端和服务器之外,还有一些用于通信数据转发的应用程序,例如代理,网关,隧道.配合服务器工作. 代理 转发功能,客户端与服务器之间可有多个代理, 缓存代理:减少服务器压力,透明代理: ...

  6. 【JDK】JDK源码分析-LinkedHashMap

    概述 前文「JDK源码分析-HashMap(1)」分析了 HashMap 主要方法的实现原理(其他问题以后分析),本文分析下 LinkedHashMap. 先看一下 LinkedHashMap 的类继 ...

  7. 华为matebook14vm虚拟机错误

    1.创建时显示不支持64位虚拟机 测试环境: 华为matebook14 window10 专业工作站版  1903   问题描述: 创建虚拟机时显示:此主机不支持64位解决方案   问题参考: 参考1 ...

  8. Codeforces Round #219(Div. 2)373 B. Making Sequences is Fun(二分+找规律)

    题目意思大概是给你w,m,k三个数,让你从m开始找 m m+1 m+2 m+3...........m+m', 使得他们的权值之和不超过w,计算权值的方法如下S(n)·k . S(n)表示n有多少位数 ...

  9. python 实现两个文本文件内容去重

    实现两个文本内容去重,输出两个文本不重复的结果 两个测试文本内容如下 1.txt中内容为 1 2 3 4 5 6 7 8 2.txt中内容为 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  10. python创建虚拟环境(Windows)

    >>>构建Python虚拟环境的目的是为了防止真实环境被破坏!!! >>>每一个项目建议用一个虚拟环境为了防止软件版本号冲突!!! 1.在终端切换到一个新的磁盘 如 ...