5.Python初窥门径(字典)
Python字典学习
1.字典初识
1.字典的简单介绍
字典(dict),是python中唯一的映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在这个地址中.这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,如果你搞不懂什么是可哈希.
已知的可哈希(不可变)的数据类型: int, str, tuple, bool
2.语法 : {key1: value1, key2: value2....}
3.注意 : key必须是不可变(可哈希)的. value没有要求,可以保存任意类型的数据,字典保存的数据时是无序的,因此不能用索引查找,只能用key来获取字典中的数据.
# key合理情况
dic = {123:456,True:False,"武当":"太极", "少林":'罗汉',"峨眉":"师太","丐帮":['祥龙','伏虎'], (1,2,3):"大挪移"}
print(dic[123]) # 456
print(dic[True]) # False
print(dic['武当']) # 太极
print(dic[(1,2,3)]) # 大挪移
print(dic["丐帮"]) # ["祥龙","伏虎"]
---------------------------------
# key不合理情况
dic = {[1,2,3]:456} # 列表是可变的,不能作key
dic = {{1:2}:"哈哈哈"} # 字典是可变的,不能作key
dic = {{1,2,3}:'呵呵呵'} # 集合是可变的,不能作key
2.字典增删改查和其他操作
1.字典增加
dic = {}
dic["name"] = '张三丰' # 如果dict中没有出现这个key, 就会新增一个key-value的组合增加到dict中
dic["age"] = 101
print(dic) # {'name':'张三丰','age':101}
---------------------------------
# 如果dict中没有出现过这个key-value.可以通过setdefault设置默认值
dic.setdefault('张三丰') # 也可以往里面设置值
dic.setdefault("张三丰","太极") # 如果dict中已经存在了,那么setdefault将不会起作用
print(dic)
2.字典删除
# pop删除 # 会有返回值
ret = dic.pop("jay")
print(ret)
---------------------------------
# del删除
del dic["jay"]
print(dic)
---------------------------------
# 随机删除.
ret = dic.popitem()
---------------------------------
# 清空字典中的所有内容
dic.clear()
3.字典修改
dic = {"武当":"太极","少林":"罗汉"}
dic1 = {"峨眉":"师太","少林":"伏虎"}
dic.update(dic1) # 把dic1中的内容更新到dic中,如果key重名则修改替换,如果不存在key则新增.
print(dic) # {"武当":"太极","少林":"伏虎","峨眉":"师太"}
print(dic1) # {"峨眉":"师太","少林":"伏虎"}
4.字典查询
一般用key来查找具体的数据
# 通过key值查询
dic = {"武当":"太极","少林":"伏虎","峨眉":"师太"}
print(dic['武当']) # 太极
# print(dic['太极']) # 报错
---------------------------------
# 用git + key方法查找
print(dic.get("ok")) # None
print(dic.get("武当")) # 太极
print(dic.get("华山", "不存在")) # 不存在
5.字典其他相关操作
dic = {123:456,True:False,"武当":"太极", "少林":'罗汉',"峨眉":"师太","丐帮":['祥龙','伏虎'],(1,2,3):"大挪移"}
---------------------------------
# 取key
print(dic.keys()) # dict_keys([123, True, '武当', '少林', '峨眉', '丐帮', (1, 2, 3)]) 不用管它是什么当成list来看就行,不可以直接用迭代方式可直接用.
---------------------------------
# 取values
print(dic.values()) # dict_values([456, False, '太极', '罗汉', '师太', ['祥龙', '伏虎'], '大挪移']) 同样,也当list来看,不可以直接用迭代方式可直接用.
---------------------------------
# 同时取key和values
print(dic.items()) # dict_items([(123, 456), (True, False), ('武当', '太极'), ('少林', '罗汉'), ('峨眉', '师太'), ('丐帮', ['祥龙', '伏虎']), ((1, 2, 3), '大挪移')]) 这个也是list,只不过list中装的是tuple,不可以直接用迭代方式可直接用.
---------------------------------
# 解构
a,b = 1,2
print(a,b) # 1 2
(c,d) = 3,4
print(c,d) # 3 4
e,f = [1,2,3] # 解构的时候注意数量必须匹配否则报错
print(e,f)# 报错
3.字典嵌套
一层一层看灵活运用即可,融会贯通.
# 字典的嵌套
dic = {123:456,True:False,"武林":{"武当":"太极","少林":"罗汉"},"少林":"罗汉","峨眉":"师太","丐帮":['祥龙','伏虎'],(1,2,3):"大挪移"}
print(dic.get("武林").get("武当")) # 太极
print(dic.get("丐帮")) # ['祥龙','伏虎']
print(dic.get("丐帮")[1]) # 伏虎
4.字典总结
- dict无序的,dict可变的,key不可改变并且唯一,value任意
- dict可以进行增,删,改,查等操作
- 存储大量数据,比列表存储量更大
- 查找值得时候更加方便,快速
- 能够将数据进行并联
- 字典比较消耗内存
5.Python初窥门径(字典)的更多相关文章
- Python中字典和集合
Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...
- Python的字典
1. Python的字典 1.1. 字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...
- Python的字典和JSON
Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...
- python基础--字典
Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...
- Python dictionary 字典 常用法
Python dictionary 字典 常用法 d = {} d.has_key(key_in) # if has the key of key_in d.keys() ...
- python有序字典OrderedDict()
转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...
- python:字典嵌套列表
Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...
- Python的字典类型
Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...
- python基础—字典
阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...
随机推荐
- 12 Python 函数
初识函数定义与调用 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":". def 是固定的,不能变,必须是连续的def三个字母,不能分开...它们要相亲相 ...
- Java丨JDK与JRE
小编是以为热爱Java的程序员,可是在我身边的一部分人他们不知道JDK和JRE是什么,有什么区别! 今天小编以个人的理解来说一说,不足之处还望大家指证. 首先我们来看看JDK和JRE他们两个的英文意思 ...
- 用cookie登录慕课网络教学中心刷评论
声明:本文仅供学习参考 我们学校和的网络教学平台是在慕课网上的,需要登录到慕课网的教学平台以后,拿到cookie 注意:没次提交后需要休眠,否则刷评论过快会被系统发现 如果请求太快,很容易被系统发现( ...
- 2018.6.21 HOLTEK HT49R70A-1 Source Code analysis
Cange note: “Reading TMR1H will latch the contents of TMR1H and TMR1L counter to the destination”? F ...
- 4_Prototype 原型
#Prototype ``` // 不好的做法 monster ghost demon sorcerer class Spawner { public: virtual ~Spawner() {} ; ...
- leetcode 1 Two Sum(查找)
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- linux命令学习笔记(20):find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作, 这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- ACM学习历程—HDU 5012 Dice(ACM西安网赛)(bfs)
Problem Description There are 2 special dices on the table. On each face of the dice, a distinct num ...
- bzoj 4066 简单题——KDtree(带重构)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4066 带部分重构的KDtree.就是那个替罪羊树思想的. 写了对拍,调了半天,发现忘了 re ...
- 理解Promise
一.Propmise基本用法 Promise用于发送一个异步完成的结果,是替代回调函数的另一种选择.可以把Promise理解为一种异步函数. 以下函数通过一个Promise来异步地返回一个结果 fun ...