字典

Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!

字典的key必须是不可变的对象,例如整数、字符串、bytes和元组,但使用最多的还是字符串。 列表、字典、集合等就不可以作为key。同时,同一个字典内的key必须是唯一的,但值则不必。

字典可精确描述为不定长、可变、无序、散列的集合类型

字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,例如:

d = {key1 : value1, key2 : value2 }

创建字典

dict()函数是Python内置的创建字典的方法。

test = {}  		# 创建空字典
test = {"a":'123','b':'2',"c":3}
dict([('name', 'juran'), ('age', 18), ('addr', 'cs')])
{'name': 'juran', 'age': 18, 'addr': 'cs'} dict(a=1, b=2, jack=4098)
{'a':1,'b':2}

访问字典

字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但是,与list类似,字典采用把相应的键放入方括号内获取对应值的方式取值。

dic = {'Name': 'json','Age': 18}
print ("dic['Name']: ", dic['Name'])
print ("dic['Age']: ", dic['Age'])
如果访问字典里没有的键,会抛出异常:
dic['address']
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
dic["address"]
KeyError: 'address'

增加和修改

增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一个值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。

dic = {'Name': 'json','Age': 18}
dic["address"] = "beijing"
dic["address"] = "Shanghai"
dic["Age"] = 20
dic
{'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
-------------------------------------
要统计字典内键的个数,可以使用Python内置的len()函数:
len(dic)
3

删除字典元素、清空字典和删除字典

使用del关键字删除字典元素或者字典本身,使用字典的clear()方法清空字典

dic
{'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
del dic['Name'] # 删除指定的键
dic
{'Age': 20, 'address': 'Shanghai'}
-------------------------------------
a = dic.pop('Age') # 弹出并返回指定的键。必须提供参数! 20
dic.clear() # 清空字典
del dic # 删除字典本身

字典的重要方法

get(key) 	返回指定键的值,如果值不在字典中,则返回default值
items() 以列表返回可遍历的(键, 值) 元组对
keys() 以列表返回字典所有的键
values() 以列表返回字典所有的值

接下来我们看看例子:

dic = {'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
dic.get("sex") # 访问不存在的key,没有报错
dic['sex'] # 访问不存在的key,报错。
Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
dic["sex"]
KeyError: 'sex'
-------------------------------------
dic.items()
dict_items([('Name', 'json'), ('Age', 20), ('address', 'Shanghai')])
-------------------------------------
dic.values()
dict_values(['json', 20, 'Shanghai'])
-------------------------------------
dic.keys()
dict_keys(['Name', 'Age', 'address'])
-------------------------------------
dic.pop('Name')
json

遍历字典

从Python3.6开始遍历字典获得的键值对是有序的

dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}

1  直接遍历字典获取键,根据键取值
for key in dic:
print(key, dic[key]) 2 利用items方法获取键值,速度很慢,少用!
for key,value in dic.items():
print(key,value) 3 利用keys方法获取键
for key in dic.keys():
print(key, dic[key]) 4 利用values方法获取值,但无法获取对应的键。
for value in dic.values():
print(value)

Python数据类型-6 字典的更多相关文章

  1. python数据类型:字典Dictionary

    python数据类型:字典Dictionary 字典是一种可变容器模型,可以存储任意类型对象 键是唯一的,但是值不需要唯一 值可以取任何数据类型,但是键必须是不可变的,如字符串,数字,元组 创建字典: ...

  2. Python数据类型(字典和集合)

    1.5 Dictionary(字典) 在Python中,字典用放在花括号{}中一系列键-值对表示.键和值之间用冒号分隔,键-值对之间用逗号分隔. 在字典中,你想存储多少个键-值对都可以.每个键都与一个 ...

  3. python 数据类型三 (字典)

    一.字典的介绍 字典(dict)是python中唯一的一个映射类型,它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存 ...

  4. Python数据类型-04.字典

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据 ------------ 完美的分割线 ------------- 1.字典引入 # 为何还要用字典?存放一个人的信 ...

  5. Python数据类型(字典)

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 字典(Dictionary) 字典 ...

  6. python数据类型之字典操作

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型.一.创建字典字典由key和value成对组成.基本语法如下: infos = {"name&q ...

  7. Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)

    字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...

  8. Python学习(六) Python数据类型:字典(重要)

    字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'mal ...

  9. python 数据类型 之 字典

    python 3.6.5字典的特性和定义定义:{'key_1':vlaue_1,'key_2':value_2}1.键与值用冒号 : 分开2.项与项 用 , 分开 特性1.可以存放多个值,可以不唯一, ...

随机推荐

  1. 【Webpack】

    目录 关于模块化编程 Webpack的工作方式 三个重要的概念 使用Webpack创建一个项目 正式使用Webpack 使用Webpack进行ES6的模块化编程 "本质上,Webpack是一 ...

  2. hadoop学习笔记(五)hadoop伪分布式集群的搭建

    本文原创,如需转载,请注明作者和原文链接 1.集群搭建的前期准备   见      搭建分布式hadoop环境的前期准备---需要检查的几个点 2.解压tar.gz包 [root@node01 ~]# ...

  3. 计算机二级-C语言-程序填空题-190107记录

    //给定程序的功能是:调用fun函数建立班级通讯录.通讯中记录每位学生的编号,姓名和电话号码.班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块(代表要使用结构体)写到名为myfile5.d ...

  4. java.net.URISyntaxException: Illegal character in query at index 147

    这是url出现了特殊字符,需要将特殊字符进行替换

  5. 使用jenkins 实现 .net core项目自动发布到 docker

    在Docker内运行Jenkins pull镜像  docker pull jenkins/jenkins:lts Dockerfile FROM jenkins/jenkins:lts USER r ...

  6. The Preliminary Contest for ICPC Asia Shenyang 2019 C Dawn-K's water (完全背包)

    完全背包为什么要取到M,可以取到2*M嘛,这题需要整取,对于不能整取的背包容量,dp[k]=INF,以及dp[j-water[i].weight]=INF时,dp[j]也不需要更新.如果不整取的话,后 ...

  7. MyCat of Middleware

    第一章 入门概述 1.1 是什么 Mycat 是数据库中间件. 1.数据库中间件 中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通. 例子:Tomcat,web中间件. 数据库 ...

  8. UA池 代理IP池 scrapy的下载中间件

    # 一些概念 - 在scrapy中如何给所有的请求对象尽可能多的设置不一样的请求载体身份标识 - UA池,process_request(request) - 在scrapy中如何给发生异常的请求设置 ...

  9. 【MYSQL建库和建表】MYSQL建库和建表

    1.Navicat创建Mysql数据库 2.创建创建用户表和索引 CREATE TABLE `t_user` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT '主键' ...

  10. /var/lib/gems/2.5.0/gems/seccomp-tools-1.3.0/lib/seccomp-tools/dumper.rb:125: warning: Insecure world writable dir /home/python/.local in PATH, mode 040777 解决方案

    /var/lib/gems/2.5.0/gems/seccomp-tools-1.3.0/lib/seccomp-tools/dumper.rb:125: warning: Insecure worl ...