python摸爬滚打之day05----字典
1、字典介绍
1.1 结构: {key1: value1, key2: value2, ....} ,由很多键值对构成. 在字典的key-value(键值对)中, key(键)必须是可哈希(不可变)的, 而且是唯一的.
1.2 字典的存储机制: 在dict中key是惟一的. 在保存的时候, 根据key, 通过哈希算法计算出一个内存地址, 然后将key-value保存在这个地址中;
在查询时, 直接查到key的哈希值 ,然后找到内存地址,将里面的key-value提取出来.
1.3 可哈希(不可变)的数据类型: str, int, bool, 元组.
不可哈希(可变)的数据类型: 列表, 字典, 集合.
1.4 字典不能进行切片,只能通过key来提取出对应的value值.
2、字典增删改查
2.1 增
dic["key"] = "value"
dic.setdefault("key","value") ----> 若key存在,不修改value且返回对应的value; 若key不存在,则在字典后面添加新的键值对, 然后输出新的值value.
dic.setdefault("key") ----> 查找"key"对应的值, 有则输出value, 没有则输出None.
删
dic.pop("key") -----> 删除"key" 对应的键值对. 返回值为删除的key对应的value.
dic.popitem() ----> 删除最后一组键值对.返回值为删除的(key, value)元组形式.
del dic["key"] ----> 删除"key" 对应的键值对.
dic.clear() ----> 清空字典,变成{}
改
dic["key"] = "value"
dic1.update(dic2) ----> 把dic2字典里面的键值对添加到dic1里面去.
查
dic["key] ---->没有值则报错.
dic.get("key","value") ---->有key对应的值则返回value, 没有的话则返回新value(第二个参数).
dic.get("key") ----> 没有则返回None.
dic.setdefault("key") ----> 没有值返回None.
3、其他操作
dic.keys() ----> 输出所有的键.
dic.values() ----> 输出所有的值.
dic.items() ----> 以元组的形式输出所有的键值对("key","value")("key","value")......
如何遍历字典?
for k, v in dic.items():
print(k, v) -----> 输出key, value (最佳方式, 推荐使用)
for k in dic:
print(k) ----> 只输出key
列表转字典
key_lst = [1,2,3,4,5]
value_lst = ["a","b","c","d","e"]
方式一: dic = {key_lst[i]: value_lst[i] for i in range(len(key_lst)) }
方式二: dic = dict(zip(key_lst,value_lst))
key_lst = [1,2,3,4,5]
value_lst = ["a","b","c","d","e"] dic1 = {key_lst[i]: value_lst[i] for i in range(len(key_lst)) } # 方式一
dic2 = dict(zip(key_lst,value_lst)) # 方式二
print(dic1)
print(dic2)
列表转字典
字典的切割
dic = {1:"A",2:"B",3:"C",4:"D",5:"E",6:"F",7:"G"}
index = [1,2,4,7]
dic_new = dict[ [k,dic[k] ] for k in index ] ----> {1: 'A', 2: 'B', 4: 'D', 7: 'G'}
dic = {1:"A",2:"B",3:"C",4:"D",5:"E",6:"F",7:"G"}
index = [1,2,4,7]
dic_new = dict([k,dic[k]] for k in index)
print(dic_new)
字典伪切割
4、字典的嵌套
找到子字典(value)对应的key名, 层层剖析.
python摸爬滚打之day05----字典的更多相关文章
- 记录我的 python 学习历程-Day05 字典/字典的嵌套
一.字典的初识 为什么要有字典 字典与列表同属容器型数据类型,同样可以存储大量的数据,但是,列表的数据关联性不强,并且查询速度比较慢,只能按照顺序存储. 什么是字典 先说一下什么叫可变与不可变的数据类 ...
- Python 优雅的操作字典【转】
Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 1.1 创建字典 Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建 函数dict ...
- 初学Python(三)——字典
初学Python(三)——字典 初学Python,主要整理一些学习到的知识点,这次是字典. #-*- coding:utf-8 -*- d = {1:"name",2:" ...
- python编程基础知识—字典
字典 在python中,字典是一系列键-值对,每个键都与一个值相关联,可使用键来访问相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典,即可将任何python对象用在字典中的值. 在pytho ...
- python调用数据返回字典dict数据的现象2
python调用数据返回字典dict数据的现象2 思考: 话题1连接:https://www.cnblogs.com/zwgbk/p/10248479.html在打印和添加时候加上内存地址id(),可 ...
- python调用数据返回字典dict数据的现象1
python调用数据返回字典dict数据的现象1 思考: 可以看到这两种情况,区别在于构造函数make()里赋值给字典dict的方式不同.使用相同的调用方式,而结果却完全不同.可以看到第二种情况才是我 ...
- python基本数据类型之字典
python基本数据类型之字典 python中的字典是以键(key)值(value)对的形式储存数据,基本形式如下: d = {'Bart': 95, 'Michael': 34, 'Lisa': 5 ...
- 『Python基础-10』字典
# 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...
- Python 优雅的操作字典
Python 中的字典是Python中一个键值映射的数据结构,下面介绍一下如何优雅的操作字典. 来源:https://www.linuxzen.com/python-you-ya-de-cao-zuo ...
- Python数据类型详解——字典
Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...
随机推荐
- 【iCore4 双核心板】DEMO V1.0 测试程序发布
iCore4 Demo V1.0程序说明 一.概要 本资料包含5个文件夹: 1.“arm”里是iCore4上arm的程序包,开发环境为KEIL5.17: 2.“fpga”里是iCore4上FPGA的程 ...
- PwniumCTF2014 - JJSN总结
Write-ups 本文最早发布在TSRC,详细地址:http://security.tencent.com/index.php/blog/msg/55 Forensics USB is FUN 这道 ...
- Intelij U
1.https://link.jianshu.com/?t=http://idea.lanyus.com/,下载JetbrainsCrack-2.6.2.jar,放到bin目录 2.编辑bin目录下面 ...
- windows下更换pip源
(1)在windows文件管理器中,输入 %APPDATA% (2)会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件 (3)在新建的pip.ini文 ...
- Go指南_指针接收者
源地址 https://tour.go-zh.org/methods/4 一.描述 你可以为指针接收者声明方法. 这意味着对于某类型 T,接收者的类型可以用 *T 的文法.(此外,T 不能是像 *in ...
- 第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框
第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框 首先安装DjangoUeditor3模块 Ueditor HTML编辑器是百度开源的HTML编辑器 下载 ...
- Xcode6: CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...
CocoaPods 错误 target overrides the `OTHER_LDFLAGS`... Xcode 升级到 6.0 后,更新 CocoaPods,出现了如下的警告 [!] The ` ...
- Linux/Centos下使用mtr做路由图进行网络分析
工具作用: mtr可以做路由图供我们分析哪里出现故障或者是否存在有网络拥塞的情况 1. 首先安装mtr 工具 使用yum 安装 : yum install mtr -y 2. 使用 我经常在工 ...
- 《objective-c基础教程》学习笔记(五)—— 继承方法
在上一篇博文中,我们将原先的纯C语言代码,编写成了用Objective-C(后面直接缩写成OC)的写法.使得代码在易读性上有明显提升,结构也更清晰.同时,也对面向对象的概念有了进一步的介绍和加深. 但 ...
- Linux内核 GPIO操作部分API
内核中关于GPIO的操作API主要集中在<linux/of_gpio.h>和<linux/gpio.h>中,前者主要是GPIO直接与设备树相关的操作,在Linux 设备树操作A ...