字典是非常常用的一种数据结构,它与json格式的数据非常相似,核心就是以键值对的形式存储数据,关于Python中的字典做如下四点说明:

1.构造字典对象需要用大括号表示 {},每个字典元素都是以键值对的形式存在,并且键值对之间用英文状态下的'':''隔开

2.键在字典中是唯一的,不能有重复,对于字符型的键需要用引号引起来。值可以是单个值,也可以是多个值构成的列表,元组或字典

3.字典不再是序列,无法通过为止索引完成元素值的获取,只能通过键索引实现。

4.字典与列表一样,都是可变类型的数据结构。

dict1={'姓名':'张三','年龄':'33','性别':'男','子女':{'儿子':'张四','女儿':'张美'},'兴趣':['踢球','游泳','唱歌']}

print(dict1)

print(dict1['年龄'])

print(dict1['子女']['儿子'])

print(dict1['兴趣'][1])

out:

{'姓名': '张三', '年龄': '33', '子女': {'儿子': '张四', '女儿': '张美'}, '性别': '男', '兴趣': ['踢球', '游泳', '唱歌']}

33

张四
游泳

#对于字典来说,它不再是序列,通过第一条输出的结果可知,构造时的字典元素与输出时的字典元素顺序已经发生了变化,想要获取元素的值,只能
在索引里面写入具体的键。

字典元素的基本操作方法:
1.字典元素的增加
一般使用以下三种方式实现:分别是:setdefault,update方法和键索引方法:
接上面的举例:
dict1.setdefault('户籍','合肥') #往字典中增加户籍信息 此处需要注意一点,不是('户籍''合肥')
dict1.update({'学历':'硕士'}) #添加学历信息 通过update的方式增加,添加的是字典形式的对象
dict1['身高'] = 178         #增加身高信息 通过直接键索引的方法直接设定对象并赋值即可 2.字典元素的删除
关于字典元素的删除可以使用pop,poptiem和clear三种方法实现。
例如:
dict1.pop('户籍') #删除户籍信息
dict1['子女'].pop('女儿') #删除字典中女儿的姓名
dict1.popitem() #删除字典的最后一个元素
dict1.clear() #清除字典元素 3.字典元素的修改
字典元素的修改如增加部分提到的,也可以使用update方法和键索方法完成字典元素的修改.需要注意的是如果字典中的值是另一个字典或列表,
需要先通过键索引实现字典元素的查询,然后在查询的基础上应用对应的修改方法即可(如update方法,取而代之).如下列出另外的几个比较重要的方法:
dict2 = {'电影':['三傻大闹宝莱坞','大话西游之大圣娶亲','疯狂动物城'],
'导演':['张三','李四','刘德华'],'评分':[9.1,9.2,9.3]}
print(dict2.get('评分'))
print(dict2.keys())
print(dict2.values())
print(dict2.items())
get方法的功能与建索引已知,可以从字典中取出键对应的值.所不同的是,如果某个键在字典中不存在,应用建索引的方法出产生'键错误'的信息;
而get方法不会报错,如果没有get到的话会显示None,也就不会影响其他脚本的正常执行.keys,values和items方法分别取出字典中的所有键,值和键值对. 另外 keys(),values()和items()方法都可以用于字典的操作,值得注意一点的是,用这三个方法返回类似的列表的值,但这个返回值不是真正的列表,它们不能被修改,没有append()
方法,但这些数据类型可以用于for循环。如:
for v in spam.values():
  print(v) 字典中的get()方法
  在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦。好在,字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在事,返回的备用值,如下例题中
设置的备用值就是 0,你也可以指定 。 例如:

picnicItems = {'apples':5,'cups':2}
print(str(picnicItems.get('cups',0))+ 'cups.')
print(str(picnicItems.get('eggs',0))+ 'eggs.')

out:

2cups.
0eggs. picnicItems字典中没有‘eggs’,get()方法返回备用值0.如有这个键就返回具体的值,如例题的是 2

setdefault()方法

常常需要为字典中的某个键设置一个默认值,当该键没有任何值时就使用它代替。

例如:

>>> spam = {'name':'Pooka','age':5}
>>> spam.setdefault('color','black')
'black'
>>> spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}
>>> spam.setdefault('color','white')
'black'
>>> spam
{'name': 'Pooka', 'age': 5, 'color': 'black'}
第一次调用setdefault()时,spam变量中的字典变为:{'name': 'Pooka', 'age': 5, 'color': 'black'} 该方法返回值‘black’,因为现在该值被赋给键‘color’。当接下来

spam.setdefault('color','white'),该键的值没有被改成 white,因为spam变量已经有一个名为 color的键了。

setdefault()方法是个很好的快捷方式,可以确保一个键存在。如下:

message = 'It was a bright cold day in April ,and the clocks wre striking thirteen.'
count = {}
for character in message:
  count.setdefault(character,0)
  count[character] = count[character] + 1
print(count)

out:

{'I': 1, 't': 6, ' ': 13, 'w': 2, 'a': 4, 's': 3, 'b': 1, 'r': 5, 'i': 6, 'g': 2, 'h': 3, 'c': 3, 'o': 2, 'l': 3, 'd': 3, 'y': 1, 'n': 4, 'A': 1, 'p': 1, ',': 1, 'e': 4, 'k': 2, '.': 1}

如上,用setdefault()方法,确保count字典中的初始值都是0,这样执行count[character] = count[character] + 1 时就不是出现KeyError的错误;

python字典的概念与基本操作的更多相关文章

  1. python文件(概念、基本操作、常用操作、文本文件的编码方式)

    文件 目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储 ...

  2. Python 字典Dict概念和操作

    # 字典概念:无序的, 可变的键值对集合 # 定义 # 方式1 # {key: value, key: value...} # 例如 # {"name": "xin&qu ...

  3. python元组的概念与基本操作

    元组与列表类似,关于元组同样需要做如下三点: A.概念 1.元组通过英文状态下的圆括号构成“()”.其存放元素与列表一样,可以是不通的数值类型,也可以是不通的数据结构. 2.元组仍然是一种序列,所以几 ...

  4. Python 字典(Dictionary) 基本操作

    Python字典是一种可变容器模型,可存储任意类型对象:如字符串.数字.元组等.它以键值对(key-value)的形式存在,因此相当于Hashmap在python中的实现. §1. 创建字典  字典由 ...

  5. PythonStudy——Python字典底层实现原理 The underlying implementation principle of Python dictionary

    在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在 ...

  6. python 字典有序无序及查找效率,hash表

    刚学python的时候认为字典是无序,通过多次插入,如di = {}, 多次di['testkey']='testvalue' 这样测试来证明无序的.后来接触到了字典查找效率这个东西,查了一下,原来字 ...

  7. python字典构造函数dict(mapping)解析

    Python字典的构造函数有三个,dict().dict(**args).dict(mapping),当中第一个.第二个构造函数比較好理解也比較easy使用, 而dict(mapping)这个构造函数 ...

  8. Python字典实现

    这篇文章描述了在Python中字典是如何实现的. 字典通过键(key)来索引,它可以被看做是关联数组.我们在一个字典中添加3个键/值对: >>> d = {'a': 1, 'b': ...

  9. 第3.5节 丰富的Python字典操作

    一. 基本概念 Python提供一种通过名称来访问其各个值的数据结构,这种数据结构称为映射(mapping).字典(dict)是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下, ...

随机推荐

  1. KMP算法图解

    字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD" ...

  2. CF804D Expected diameter of a tree 树的直径 根号分治

    LINK:Expected diameter of a tree 1e5 带根号log 竟然能跑过! 容易想到每次连接两个联通快 快速求出直径 其实是 \(max(D1,D2,f_x+f_y+1)\) ...

  3. C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!

    接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...

  4. 省选模拟赛day4

    怎么说?发现自己越来越菜了 到了不写题解写不出来题目的地步了.. 这次题目我都有认真思考 尽管思考的时候状态不太好 但是 我想 再多给我时间也思考不出来什么吧 所以写一份题解. T1 n个点的有根树 ...

  5. Python网络数据采集PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:jrno 内容提要 本书采用简洁强大的 Python 语言,介绍了网络数据采集,并为采集新式网络中的各种数据类 型提供了全面的指导.第一部分重点介绍网络数据采集的基本原理:如何用 Py ...

  6. MyBatis-Plus使用(1)-概述+代码生成器

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 官网:https://mp.baomidou.com ...

  7. JVM系列之:JIT中的Virtual Call

    目录 简介 Virtual Call和它的本质 Virtual Call和classic call Virtual Call优化单实现方法的例子 Virtual Call优化多实现方法的例子 总结 简 ...

  8. Android SQLite轻量级数据库的删除和查找操作

    今天主要是补充昨天的内容,本打算合成一章的,但是毕竟一天一天的内容写习惯了. 就这样继续昨天的,昨天只讲了创建以及增加和查询, 其实用法都差不多,今天学长也是在原有的基础上写的,还顺便融合了Share ...

  9. VMware虚拟机磁盘收缩的几种方法

    原文地址:http://www.cnblogs.com/5201351/p/4290401.html 根据下面转载的内容,我在VMware 12.0.0 build-2985596的ubuntu上做试 ...

  10. 微信小程序--家庭记账小账本(四)

    今天的进展不太顺利,总的账单表,代码改了又改,最后决定用一个新的表,账单界面中弄了一天删除,发现都无法实现想要的效果,于是把账单界面的删除功能去了,就感觉大功告成的时候,发现收入和支出界面的删除也出现 ...