字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象。是Python存储数据类型的最高级(maybe)。

  特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(value)的方式进行存储的,其特点很像平时去查找字典,键类似于字典的目录,值是想要查找的内容。

     2. 字典属于哈希表的一种应用。

       3. 字典是通过{ }来定义、存储、查找数据的。

     4. 字典元素的访问是通过键[" 键名 "]来访问元素的。

     5. 特别说明一下在字典的增删改查的操作中,记住这个公式:一个item = key + values,一个项目 = 一个键 + 值,后面对函数的用途就一目了然了。

1.   字典的简单应用

1.1   创建一个字典

  语法:dict = {key1:value1, key2:value2, keyn:valuen},字典的每一个键值(key = value)是一一对应的,且用冒号进行分割。

  字典包括{ }内键必须是唯一的,但职责可不比,因此字典是没有顺序的。字典很像一种数据库或者成绩单花名册。

 # 创建一个字典 #
# 创建一个空字典
dict0 = {}
print(dict0)
# 输出结果:{}
dict1 = {"Name": "Zara", }
print(dict1)
# 输出结果:{'Name': 'Zara'}
dict2 = {"Name": "Zara", "Age": 7, "Class": "First"}
print(dict2)
# 输出结果:{'Name': 'Zara', 'Age': 7, 'Class': 'First'}

1.2  字典的访问、修改和删除

  这里特别说明一下pop函数popitem函数,因为字典没有顺序这么一说,所以pop(keyname)也就类似于找到序号了;另外popitem函数,因为字典没有append这么一说,所以popitem()方法随机返回并删除字典的一对键和值(一般删除末尾对)。如果字典已经为空,调用了此方法,就会报keyerror异常。

 # 字典的访问和修改和删除 #(与列表、元组大同小异)
# 字典的访问[]
dict = {"Name": "Zara", "Age": 7, "Class": "First"}
print(dict["Name"]) # 通过键值访问
print(dict["Age"]) # 通过键值访问
# 输出结果:
# Zara
# # 字典的修改
# 通过键来修改
dict1 = {"Name": "Zara", "Age": 7, "Class": "First"}
dict1["Age"] = 8 # 通过键值修改内容
dict1["School"] = "Qingdao University" # 添加键值增加内容
print(dict1)
# 输出结果:
# {'Name': 'Zara', 'Age': 8, 'Class': 'First', 'School': 'Qingdao University'} # 字典的删除 del函数、clear函数、pop函数、popitem函数
dict3 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict3["Name"] # 清除字典中的某个键值
print(dict3) # 键的删除其值也不复存在
# 输出结果:{'Age': 7, 'Class': 'First'} dict3.clear() # 清除字典中所有内容
print(dict3)
# 输出内容:{} dict3 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict3.pop("Name") # 删除给定key所对应的值
print(dict3)
# 输出结果:{'Age': 7, 'Class': 'First'} dict3 = {'Name': 'Zara', 'Age': 7, 'Class': 'First', "Married": "None"}
dict3.popitem()
print(dict3) # 随机返回并删除字典中对应的键和值
# 输出结果:{'Name': 'Zara', 'Age': 7, 'Class': 'First'}

2.   字典的常用内建函数的应用

  函:dict.copy()

    语:字典的拷贝

      用:属于深拷贝

 # dict.copy()
# 作用:字典的拷贝
dict4 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict5 = dict4.copy()
print(dict4, dict5)
# 输出结果: {'Name': 'Zara', 'Age': 7, 'Class': 'First'} {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

   函:dict.fromkey()

    语:dict.fromkey(["key1", "key2", "keyn"])

      用:创建一个新字典,序列seq中元素作为字典的键,value中所有的值都初始化

 # dict.fromkeys
# 作用:创建一个新字典,一序列seq中元素做字典的键,val为字典所对应的初始化
dict6 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict7 = dict6.fromkeys(["Name", "Age", "Class"]) # 创建一个新字典,键值引用原先的那几个,且值都为None
print(dict7)
# 输出结果:{'Name': None, 'Age': None, 'Class': None}

   函:dict.get

    语:dict.get("key")

      用:获取某一个键的值,每次只能差一个,若没有次键值返回为None

 # dict.get
# 作用:获取某一个键的值,每次只能查一个,若没有此键值返回为None
dict8 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict9 = dict8.get("school")
dict10 = dict8.get("Class")
print(dict9, "来自于: ", dict8)
print(dict10, "来自于: ", dict8)
# 输出结果:
# None 来自于: {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
# First 来自于: {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

   函:dict.setdefault

    语:dict.setdefault("key")

      用:与dict.get的效果一样,如果键不存于字典中,将会添加键并将值设为默认的None

 # dict.setdefault与get效果一样,如果键不存在于字典中,将会添加键并将值设置为default默认None
# 作用:获取某一个键的值,每次只能查一个
dict8 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict9 = dict8.setdefault("School")
print(dict9, dict8) # 将原先的赋值为None,重新提添加了一个键,值默认为None
# 输出结果:None {'Name': 'Zara', 'Age': 7, 'Class': 'First', 'School': None}

  函:dict.item

    语:dict.item()

      用:对整个字典进行遍历

 # dict.items()
# 作用:以列表返回可遍历的(键、值)
dict10 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict11 = dict10.items()
print(dict11) # 显示字典中所有元素的全貌
print(type(dict10))
print(type(dict11)) # 我们观察到这个遍历函数返回的是一个dict_items类型,可用list函数把找到的东西强制转换成列表形式。
# 输出结果:
# dict_items([('Name', 'Zara'), ('Age', 7), ('Class', 'First')])
# <class 'dict'>
# <class 'dict_items'>

   函:dict.key、dict.values

    语:dict.key()、dict.values()

      用:遍历整个字典中的键和值

 # dict.key()、dict.values()
# 作用:显示字典中所有的键值、显示字典中所有的值
dict11 = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict12 = dict11.keys()
print(list(dict12), dict11.values()) # 这里特别说明一下,可以用list函数把找到的东西强制转换成列表形式。
# 输出结果:['Name', 'Age', 'Class'] dict_values(['Zara', 7, 'First'])

   函:dict.update

    语:dict1.update(dict2)

      用:把dict2的字典更新到dict1里面,dict1的内容顺延添加到dict1的字典中。

 # dict.update()
# 作用:将某个字典中的值,后续顺延更新到某个字典中
dict13 = {'Name': 'Zara', 'Age': 7}
dict14 = {'Sex': 'female' }
dict14.update(dict13)
print(dict14)
# 输出结果:{'Sex': 'female', 'Name': 'Zara', 'Age': 7}

3.   字典常用的技巧

3.1   字典的遍历

 # 字典的遍历
dict15 = {"name": "aliex", "age": 18}
for i, v in enumerate(dict15):
print(i, v)
# 这里看枚举函数就不能使用了。
# 输出结果:
# 0 name
# 1 age dict15 = {"name": "aliex", "age": 18}
for i in dict15:
print(i, dict15[i]) # 首先找到i的键,然后通过dict[键]的方式再把值列出来
# 输出结果:
# name aliex
# age 18 for items in dict15.items():
print(items)
print(type(items))
# 这样遍历的方式,是把内容全部以元组方式进行输出
# 输出结果:
# ('name', 'aliex')
# ('age', 18)
# <class 'tuple'> for key,values in dict15.items():
print(key,values)
# 通过分开写的形式,可以遍历出具体的数据
# 输出结果:
# name aliex
# age 18

Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)的更多相关文章

  1. Python笔记_第一篇_面向过程_第一部分_2.内存详解

    Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...

  2. Python笔记_第一篇_面向过程_第一部分_1.Python环境的设置(含虚拟机)

    *Python环境的设置 Python的环境设置也就是所需工作平台的软件搭建.常用的搭建平台IOS系统+Linux系统和Windows+Linux系统的搭建.这里主要说明的是Windows+Linux ...

  3. Python笔记_第一篇_面向过程_第一部分_6.条件控制语句(if)

    Python正如其他语言一样存在两种常用的逻辑判断体(也叫结构化程序设计).所谓逻辑判断体是通过你想要完成的编程思路,通过在逻辑判断体中的相互判断和作用得到你想要的结果.逻辑判断体也叫控制语句,Pyt ...

  4. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  5. 四、java基础-面向过程_对象_类中可出现的因素

    1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...

  6. python自动化开发-[第五天]-面向过程、模块、包

    今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...

  7. python第四周迭代器生成器序列化面向过程递归

      第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...

  8. [Python笔记]第八篇:模块

    本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...

  9. [Python笔记]第三篇:深浅拷贝、函数

    本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...

随机推荐

  1. 在登陆退出时候使用Vuex

    1.登陆的时候,在登陆模块请求接口,然后获取一个access_token,获取用户权限.保存到缓存里面. 2.退出的时候,请求退出接口,把缓存里面的access_token清除. 一旦要在登陆里面做一 ...

  2. spring学习第8天(advisor)

    1.关于之前的一个错误:aop的输出顺序,实际上官方文档上并没有说是否按照书写顺序输出的,有可能你1000次里面800次按顺序输出,200是随机输出的.<aop:aspect>有一个ord ...

  3. AD走圆弧走线

    美式键盘: “shift  +  空格”

  4. 知乎live - 三年从前端小工到架构

    王利华   刚毕业 在高德 携程 淘宝    0-3年如何发展 1 技能和能力的区别    css js 抽象     切勿好高骛远 要重视基础 2 人和人的差距是什么    注意个人品牌    提高 ...

  5. 微信公众号开发之内网映射外网natapp安装(一)

    一,为什么使用natapp 1,在进行微信公众号开发时,我们需要搭建网站,并且随时都有可能修改网站内容进行调试.如果能够将内网ip映射到外网上,将大大方便我们的调试.每次发布只需eclipse运行应用 ...

  6. Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年

    计算年.月.日需要安装组件包 pip install python-dateutil 当前日期时间 import datetime print datetime.datetime.now() # 20 ...

  7. 2、用优化器使loss最小

    2.tf.train.AdamOptimizer()函数是Adam优化算法:是一个寻找全局最优点的优化算法,引入了二次方梯度校正. tf.train.AdamOptimizer.__init__( l ...

  8. (5)opencv的基础操作和矩阵的掩模操作

    不懂的,可以简单,看看这个网址:https://blog.csdn.net/xiongwen_li/article/details/78503491 图片放到了桌面,所以,图片的路径就是桌面了,剩余的 ...

  9. Redis高级用法

    第一章 redis初识 1.1 Redis是什么 介绍 开源:早起版本2w3千行 基于键值对的存储系统:字典形式 多种数据结构:字符串,hash,列表,集合,有序集合 高性能,功能丰富 那些公司在用 ...

  10. 大数据高可用集群环境安装与配置(03)——设置SSH免密登录

    Hadoop的NameNode需要启动集群中所有机器的Hadoop守护进程,这个过程需要通过SSH登录来实现 Hadoop并没有提供SSH输入密码登录的形式,因此,为了能够顺利登录每台机器,需要将所有 ...