一、字典定义

  字典是python中唯一的映射类型,以{ }括起来的键值对组成,在dict中key是唯一的.在保存时,根据key来计算一个内存地址,然后把key-value保存至地址中.这种算法是hash算法.所以 key必须是不可变数据类型(即可hash的),value是不限制的,dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. ⽽hash表不是连续的. 所以不能进行切片操作. 它只能通过key来获取dict中的数据

  可hash(不可变)数据类型: int  str   tuple  bool

  不可hash(可变)数据类型: list  dict  set

  语法: dic = {key1: value1key2: value2}

二、字典的增删改查

  1、增

 dic = {}
dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组
合进dict
dic['age'] = 18
print(dic)
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.
dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会
起作⽤
print(dic)

  2、删除

 ret = dic.pop('joy')
print(ret) del dic['joy'] #key值删除
print(dic) ret = dic.popitem() # 随机删除 dic.clear() # 清空字典中的所有内容

  3、修改

dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) #把dic1中的内容更新dic中,如果key重名,则修改替换,如果不存在key,则新增

  4、查询

# 查询一般用key来查找具体的数据
print(dic['name']) #如果查询的key不存在会报错
print(dic.get('ok'))
print(dic.get('syslay')) # None
print(dic.get('syalr', '牛')) #牛

三、字典其他操作

 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是
# 什么.当成list用就行 for key in dic.keys():
print(key) print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐'])当list来⽤ for value in dic.values():
print(value) print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), #
#('age',18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过
#list中装的是tuple for key, value in dic.items(): # ?? 这个是解构
print(key, value) # 解构
a, b = 1, 2
print(a, b) (c, d) = 3, 4
print(c, d) e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
print(e, f)

四、字典嵌套

 # 字典的嵌套
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章⼦怡',
"age": 28
},
"children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
"desc": '峰哥不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))

05_python_字典的更多相关文章

  1. 【DG】Oracle_Data_Guard官方直译

    [DG]Oracle Data Guard官方直译 1 Oracle Data Guard 介绍   Oracle Data Guard概念和管理10g版本2   Oracle Data Guard ...

  2. DVWA实验之Brute Force(暴力破解)- Low

    DVWA实验之Brute Force-暴力破解- Low     这里开始DVWA的相关实验~   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2 ...

  3. Oracle错误览表

    Oracle 错误总结及问题解决 ORA     本文转自:https://www.cnblogs.com/zhangwei595806165/p/4972016.html  作者@承影剑 ORA-0 ...

  4. Javacript实现字典结构

    字典是一种用[键,值]形式存储元素的数据结构.也称作映射,ECMAScript6中,原生用Map实现了字典结构. 下面代码是尝试用JS的Object对象来模拟实现一个字典结构. <script& ...

  5. python 数据类型 ----字典

    字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...

  6. 增强版字典DictionaryEx

    代码 public class DictionaryEx<TKey, TValue> : IDictionary<TKey, TValue> { /// <summary ...

  7. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  8. python之最强王者(8)——字典(dictionary)

    1.Python 字典(Dictionary) 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包 ...

  9. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

随机推荐

  1. stm8 单线串口能收不能发

    原因是把连接的TX和RX短接了,其实在TX和RX间要串一个电阻,然后让stm8的单线TX接到RX.

  2. linux文件系统问题:wrong fs type, bad option, bad superblock

    http://blog.itpub.net/26006637/viewspace-1059946/ 报错内容: mount: wrong fs type, bad option, bad superb ...

  3. ubuntu禁用n卡驱动(进系统卡死)

    显卡驱动 该发行版依旧内置了Nouveau 开源驱动,这是导致频繁死机的直接原因.接下来要做的三件事情是: 禁用Nouveau 内核模块 安装Intel HD 530 驱动(二选一) 安装NVIDIA ...

  4. 2018.06.27"Shortest" pair of paths(费用流)

    "Shortest" pair of paths Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1589 A ...

  5. (12)We should aim for perfection — and stop fearing failure

    https://www.ted.com/talks/jon_bowers_we_should_aim_for_perfection_and_stop_fearing_failure/transcrip ...

  6. 5W2H+35问

    之前看到的一个非常好且全面的做事方法论.

  7. css基本图形绘制(基本的矩形、圆形、椭圆、三角形、多边形,也包括稍微复杂一点的爱心、钻石、阴阳八卦等)

    正方形: 代码: <style> .square { width: 100px; height: 100px; background-color: cornflowerblue; } &l ...

  8. Cron连接正常工作5次后异常原因分析

    目录 目录 1 问题描述 1 分析定位 1 解决方法 2 附1:Cron工作流 3 附2:SIGPIPE发生的位置 3 如果一个shell命令的"$?"值为141,则它是收到了SI ...

  9. 小组spring计划列表

    我们的会议地点:石家庄铁道大学三栋420. 每天进行会议的时间是早上七点钟. 会议内容:主要是讨论当日进行哪一个进程.

  10. 51nod 1239 欧拉筛模板

    #include<iostream> #include<cmath> #include<cstring> #include<cstdio> #inclu ...