本节主要内容:

1. 字典的简单介绍

2. 字典增删改查和其他操作

3. 字典的嵌套

字典

字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key-value保存在这个地址中. 这种算法被称为hash算法, 所以, 切记,在dict中存储的key-value中的key'必须是可hash的, 如果你搞不懂什么是可哈希, 暂时可以这样记, 可以改变的都是不可哈希的,那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址而规定的.

已知的可哈希(不可变)的数据类型: int, str, tuple, bool

不可哈希(可变)的数据类型: list, dict, set

dict保存的数据不是按照我们添加进去的顺序保存的. 是按照hash表的顺序保存的. 而hash表不是连续的. 所以不能进行切片工作.

它只能通过key来获取dict中的数据

二. 字典的增删改查和其他相关操作

字典的增加主要有赋值增加.

dist = {}

dist["第一个"] = "字典"

如果第二个赋值的话,key仍然是这个值,那么会做出修改操作.

如果不想实现修改操作的话,那么需要使用这个方法

dist.setdefault("第二个")

dist ={}

dist.setdefault("第二个")

dist.setdefault("第二个","字典") #这里注意,虽然key是相同的的,但value并不会修改.但是要了解,只有这个方法不会修改,如果是赋值,还是会修改

print(dist)

删除

字典的删除主要有四种方法  dist.pop(),dist.clear(),dist.popitem(),del dist["key"]

这里面要注意两个,

一个是pop()删除时,会返回删除的内容.

另一个popitem()会删除一个随机k,v ,然后返回一个元组.

示例:

dic = {"id":123,"name":'sylar',"age":18}

p = dic.pop("id") # pop()中需要传入key

print(p)

print(dic)

del dic["age"] #直接del删除某个索引的内容

print(dic)

dic.clear() #清空字典

print(dic)

dic = {"id":123,"name":'sylar',"age":18}

dic.popitem() #随机删除一组key和value,返回的是删除的key和value,并且是元组形式

print(dic)

当dist.popitem()返回元组时,可以看一下解构这个概念.

解构

a,b = (1,2)

print(a)  #等于1

print(b) #等于2

同样的对于列表和字符串同样生效

a,b = [1,2]

print(a)  #等于1

print(b) #等于2

这里有个示例:

k,v = dict.popitem()

print(k,v)  #打印出随机删除的k,v

dic.update(dic2) #也就是把dic2字典的内容更新到dic里面,如果key值一样进行修改,没有就是增加.dic2并不会发生变化

示例:

dic = {"id":123,"name":'sylar',"age":18}

dic1 = {"id":5676,"hobby":"girl"}

dic.update(dic1)

print(dic)

查的话一般有两种方法一个是通过类似索引key来查询,另一种是通过dic.get("key")来查

两者的区别就是如果通过索引来查的话,没有会报错.通过dic.get("key")来查如果没有的话会返回None,以及可以设置如果没有返回默认值

dic.get("key","默认值")

示例如下:

dic = {"id":123,"name":'sylar',"age":18}

p= dic["id"] #正常的话是可以查出值的.

print(p)#w = dic["我"]#pirnt(w) #这样会报错.

#通过这样查就没有这个问题的.并返回的是None

w = dic.get("我")print(w)#也可以在没找到值的情况下返回默认的值 的

x= dic.get("我","hehe")print(x)

其他相关操作

相关操作包括,dist.keys,dist.values(),dist.items()

dist.keys()  相当于获取所有的key放在一个列表中,配合解构在循环中调用

dist.values()  相当于获取所有的value放在一个列表中,配合解构在循环中调用

dist.items()  相当于获取所有的key/value,最后获取到的是列表,每个key和value是一个元组

示例:

dic = {"id":123,"name":'sylar',"age":18}

for w in dic.keys(): #循环打出所有的key

print(w)

for w in dic.values(): # 循环打出所有的value

print(w)

for k,v in dic.items():# 循环打出所有的key和value值

print(k,v)

二,循环的嵌套

这个嵌套和之前的列表嵌套很相似,只要按照逻辑一层一层下去就好了.

示例:

"""1,将name对应的列表追加一个元素’wusir’。

2,将name对应的列表中的alex首字母大写。

3,oldboy对应的字典加一个键值对’老男孩’,’linux’。

4,将oldboy对应的字典中的alex对应的列表中的python2删除。"""dic1.get("name").append("wusir")print(dic1)

dic1.get("name")[0] = dic1.get("name")[0].capitalize()print(dic1)

dic1.get("oldboy")["老男孩"] = "linux"

print(dic1)

dic1.get("oldboy").get("alex").remove("python2")print(dic1)

python随机字典数据_python数据类型-字典相关推荐

  1. python定义map数据_python数据类型之 dict(map)

    字典 一.创建字典 方法①: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>&g ...

  2. python列表转集合_Python数据类型 列表、元组、集合、字典的区别和相互转换

    一:数据类型 列表.元组.集合.字典的区别 列表元组集合字典 英文 list tuple set dict 可变与不可变类型 可变类型 不可靠类型 可变类型 可变类型 可否重复 是 是 否 是 存储方 ...

  3. python的6种基本数据类型--字典

    python的6种基本数据类型--字典 字典 字典的定义与特性 字典是Python语言中唯一的映射类型. 定义:{key1:value1,key2:value2} 1.键与值用冒号":&qu ...

  4. python创建字典型数据_Python数据类型之字典dict

    # 字典是一种可变容器类型,可存储任意类型对象 # 字典以键值对存储数据,key-value形式,键值之间使用冒号:分隔,每个键值中间用逗号,分隔 # 字典包含在大括号,花括号{}中 # python ...

  5. python的dict类型_python数据类型:dict(字典)

    一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成. 语法: {key1:value1,key2:value2......} 注意:key必须是不可变 ...

  6. python整理数据_Python数据类型整理

    数据类型 什么是数据类型: 首先我们知道变量就是表示事务状态变化的量,那么不同的状态,就要用不同的方式来表示 一.数字类型 1.1什么是数字类型: 即:1,2,1.5这样的叫做数字类型 2.1数字类型 ...

  7. python中字典使用_python中字典的使用

    python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'co ...

  8. python字典查询_python查询字典

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  9. python打印字典关键字_python高效字典操作

    本文原作者为python之禅 :刘志军 字典(dict)对象是 Python 最常用的数据结构,社区曾有人开玩笑地说:"Python 企图用字典装载整个世界",字典在 Python ...

最新文章

  1. php pdo 中文乱码,php pdo oracle中文乱码的快速解决方法
  2. 900万张标注图像,谷歌发布Open Images最新V3版
  3. javascript行内脚本小小探讨
  4. HTTP协议之post multipart/form-data数据类型实例
  5. 1.2.2 认识各个硬件部件
  6. 增大iphone音量技巧_原来苹果手机隐藏功能这么好用!调整这个设置,一键增大外放音量...
  7. 如何与Java 8,NetBeans Platform 8,Jenkins,Jacoco和Sonar进行持续集成
  8. if-else嵌套太深?教你一个新手都能掌握的设计模式搞定!
  9. Java学习笔记(二)Java基本语法
  10. 我在用的多功能电子书阅读器
  11. 在Vmplayer中自定义桥接网络(Bridged Network)的配置
  12. OA网站不能正常显示(不能看正文)
  13. 操作系统实验一 进程管理
  14. MATLAB闪一下打不开问题解决
  15. 经济基础知识(中级)【6】
  16. DirectAdmin
  17. 读书·2020(26本)
  18. python调用系统本地程序
  19. 每日一课 | 在Python中获取列表的长度和大小
  20. 17正交矩阵和Gram-Schmidt正交化

热门文章

  1. gitlab run成功 但无法访问_gitlab 部署 管理
  2. 使用inetaddress测试目标可达性_白盒测试工具―Winams介绍
  3. tensorflow.transpose() 举例
  4. TENSORFLOW较好的博客
  5. eclipse 出现 an error has occured when activating this view
  6. SIGIR|乘风破浪的AI华人学者们
  7. 北京智源人工智能研究院关于征集2019年度智源青年科学家的通知
  8. 大型Web前端架构设计:面向抽象编程入门
  9. 对话计算机史学权威,才知道量子计算机马上要来了
  10. 「图神经网络东」最新2022综述