python---基本数据类型 dict(字典)
1. 什么是字典
字典是python中唯一的映射类型, 由{ } 括起来的键值对组成,在dict中key是唯一的.字典是以key:value的形式来保存数据, 字典存储数据的时候是用的hash值来存储. 算法不能变(python的)
数据必须是不可变的(可哈希). 字典的key必须是可哈希的(不可变).
已知的可哈希的(不可变)的数据类型: int , str , tuple , bool
不可哈希(可变)的数据类型: list , dict , set
语法:
dict = {key: value, key: value ... }
注意:
key必须是不可变(可哈希)的, value没有要求,可以保存任意类型的数据
2. 字典的增删改查
dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的. 而hash表不是连续的.
所以不能进行切片工作,它只能通过key来获取dict中的数据
1.增加
dic[key] = 值
dic.setdefault(key) 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.删除(pop , popitem 随机删除, clear 清空)
ret = dic.pop("joy")
print(ret)
del dic["jay"]
print(dic)
# 随机删除.
ret = dic.popitem() # 清空字典中的所有内容
dic.clear()
3. 改 ( update )
.update()
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1)
# 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存 在key, 则新增.
print(dic)
print(dic1)
4. 查询
print(dic['name']) # print(dic['t'])
# 报错 print(dic.get("ok")) print(dic.get("t"))
# None print(dic.get("t", "⽜B"))
# ⽜B
5. 字典的其他相关操作
. keys() 获取到所有的键
. values() 获取到所有的值
. items() 拿到所有的键值对 #解构, 注意数量必须匹配
a , b = 1, 2
print(a , b) (c , d) = 3 , 4
print( c , d)
3. 字典的嵌套
字典的嵌套. 字典套字典
# 字典的嵌套 .get(key) 根据key取value
dic1 = {
"name": "汪峰",
"age": 18,
"wife": {
"name": '章子怡',
"age": 28
},
"children": ['第一个毛孩子', '第⼆个毛孩子'],
"desc": '峰哥不不会告我吧. 没关系. 我想上头条的'
}
print(dic1.get("wife").get("name"))
print(dic1.get("children"))
print(dic1.get("children")[1])
5. 集合(不重要). 去重复
集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key
空集合:set()
空元组:tuple()
空列表:list()
非空集合: {123}集合, 集合其实就是不存value的字典
# 遍历字典两套方案
dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
# 1. 使用for循环直接遍历字典的key
# for key in dic:
# print(key)
# print(dic[key]) # 2. 可以使用字典的items()+解构可以直接获取到key和value
# for k, v in dic.items():
# print(k)
# print(v)
python---基本数据类型 dict(字典)的更多相关文章
- Python - 基础数据类型 dict 字典
字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...
- python基础数据类型--dict 字典
字典 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必 ...
- python基本数据类型之字典
python基本数据类型之字典 python中的字典是以键(key)值(value)对的形式储存数据,基本形式如下: d = {'Bart': 95, 'Michael': 34, 'Lisa': 5 ...
- Python基础数据类型之字典
基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...
- Python基本数据类型之字典dict
字典dict 是一个键(key)值(value)对,结构为{},大括号 创建字典 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 info = { # k ...
- python基础(六)dict字典和文件操作open
字典dict 使用key来标注value的数据类型,key和value是一一对应的.在字典中key是唯一的,所以字典也是无序的. #定义一个字典 dict = { 'name' : 'sylar', ...
- Python开发——数据类型【字典】
字典的定义 # Python语言中唯一的类型映射 # 键与值之间用“:”分开 # 项与项之间用“,”分开 person = {"name":"yuan",&qu ...
- python基础数据类型之字典的操作
一. 字典的简单介绍字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后将key- ...
- python:数据类型dict
一.字典 key -->value 储存大量数据,而且是关系型数据,查询速度非常快 数据类型分类: 可变数据类型:list , dict, set 不可变的数据类型:int , bool, st ...
随机推荐
- Go语言优势与劣势
Go语言的优势: 1.脚本化的语法:开发效率高,容易上手 2.静态类型+编译型,程序运行速度有保障:静态类型+编译型语言相对于动态类型+解释型语言的效率高 3.原生的支持并发编程:降低开发.维护成本/ ...
- FoxPro 常用内部函数
1.数学函数(数值函数) 求绝对值函数ABS 格式:ABS( expN) 求整函数INT 格式:INT( expN) 四舍五入函数ROUND 格式:ROUND( expN,〈保留小数位〉) 功能:按保 ...
- ThreadLocal<T> 类
using System; using System.Threading; using System.Threading.Tasks; class ThreadLocalDemo { // Demon ...
- 更改FP SYSTEM密码
1 Please create a new account and set a new password 2 backup table ABPPMGR.USER_PROFILE , ABPPMGR . ...
- 63. Unique Paths II (Graph; DP)
Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...
- Zend Studio使用综述
1.如何将zend studio 9的默认GBK编码设置为其它编码,例如UTF-8? 选 择window菜单->Preferences->General->Workspace,在界 ...
- Golang之一个简单的聊天机器人
翠花,上代码 package main import ( "bufio" "fmt" "os" "strings" ) ...
- Qt的安装和使用中的常见问题(详细版)
对于太长不看的朋友,可参考Qt的安装和使用中的常见问题(简略版). 目录 1.引入 2.Qt简介 3.Qt版本 3.1 查看安装的Qt版本 3.2 查看当前项目使用的Qt版本 3.3 查看当前项目使用 ...
- UVa 11419 SAM I AM (最小覆盖数)
题意:给定一个 n * m 的矩阵,有一些格子有目标,每次可以消灭一行或者一列,问你最少要几次才能完成. 析:把 行看成 X,把列看成是 Y,每个目标都连一条线,那么就是一个二分图的最小覆盖数,这个答 ...
- 如何提取kinect中深度图的点云数据
https://bbs.csdn.net/topics/391080654 在Matlab中调用Kinect教程:https://jingyan.baidu.com/article/af9f5a2d1 ...