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初窥门径(字典)的更多相关文章

  1. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  2. Python的字典

    1.  Python的字典 1.1.  字典的定义 在Python中,字典是一种key-value的数据类型,也是唯一的映射类型:字典还是另一种可变容器类型,且可存储任意类型对象,其中也可包括其他容器 ...

  3. Python的字典和JSON

    Python的字典和JSON在表现形式上非常相似 #这是Python中的一个字典 dic = { 'str': 'this is a string', 'list': [1, 2, 'a', 'b'] ...

  4. python基础--字典

    Python基础--字典 字典的常用函数: dict.clear( )--->无任何返回值 说明: 清除字典内的所有的元素 语法: In [5]: dict.clear? Type: metho ...

  5. Python dictionary 字典 常用法

    Python dictionary 字典 常用法 d = {} d.has_key(key_in)       # if has the key of key_in d.keys()          ...

  6. python有序字典OrderedDict()

    转python创建有序字典OrderedDict # -*- coding:utf-8 -*- """ python有序字典 需导入模块collections " ...

  7. python:字典嵌套列表

    Python的字典{ }以键值对的形式保存数据,可以以键来访问字典中保存的值而不能用下标访问.字典中几乎可以包含任意的变量,字典,数列,元组.数列也一样. python的列表[ ]与字典不同,列表通过 ...

  8. Python的字典类型

    Python的字典类型为dict,用{}来表示,字典存放键值对数据,每个键值对用:号分隔,每个键值对之间用,号分隔,其基本格式如下: d = {key1 : value1, key2 : value2 ...

  9. python基础—字典

    阅读文本需要3分钟,不建议跳读 节目清单 字典是python中最重要的数据类型,字典由“键-值”对组成的集合,字典中的“值”通过“键”来引用.这里将介绍字典的定义.访问.排序等功能. 字典的创建 字典 ...

随机推荐

  1. 第二章 python基础(一)

    第一节 Python文件类型 源代码 Python源代码的文件以“py”为扩展名,由Python程序解释,不需要编译 字节代码 Python源文件经编译后生成的扩展名为“pyc”的文件 编译方法 im ...

  2. printf 小代码 大问题

    技术 对于我来说 是我前进的动力 虽然有时候感觉会枯燥乏味 不过没关系 放松一下紧张的心态 做一些你能够是你进步的事情  这样 你才会觉得  每天都过得很充实  学海无涯  坚持追求你所想要实现的梦想 ...

  3. tornado 获取参数

    self.get_argument('name') 没有传递name就报400错误了 tornado.web.MissingArgumentError: HTTP 400: Bad Request ( ...

  4. P1030 求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  5. 对存在JavaScript隐式类型转换的四种情况的总结

    一般存在四种情况,JavaScript会对变量的数据类型进行转换. 目录 * if中的条件会被自动转为Boolean类型 * 会被转为false的数据 * 会被转为true的数据 * 参与+运算都会被 ...

  6. 命令行启动nodejs方式 小总结

    之前启动nodejs都是写一个命令行文件,如nodejs.cmd,内容为:start node E:\node\app.js. 今天突然想到之前也用过另外一种方式启动,就是在命令行通过cd命令先找到n ...

  7. Azure Public IP DNS域名

    在某些环境下,PIP是Azure上的一种比较好的解决方案处理一些特殊的环境.比如大量的端口需要打开.向外部的访问非常多等等. 但目前,Azure的Reserved IP address不用应用到PIP ...

  8. linux 防暴力破解

    #!/bin/bash SCANIP=`grep "Failed" /var/log/secure* | awk '{print $(NF-3)}'| sort |uniq -c ...

  9. assert.ifError()

    assert.ifError(value) 如果 value 为真,则抛出 value. 可用于测试回调函数的 error 参数(通俗解释ifError方法断定某个表达式是否false,如果该表达式对 ...

  10. nodejs assert 模块

    assert模块是Node的内置模块,主要用于断定.如果表达式不符合预期,就抛出一个错误.该模块提供11个方法,但只有少数几个是常用的. 1.assert() assert(value[, messa ...