字典是Python中重要的数据类型,字典是由"键-值"对组成的集合,"键-值"对之间用逗号隔开,包含在一对花括号中。字典中的"值"通过"键"来引用。

创建字典

创建字典的格式如下:

dictionary = {key1:value1, key2:value2, ...}

创建实例如下:

dict = {} #空字典
dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell')} #多元素字典
dict2 = {'lesson1': 'Python', lesson2': 'Java', 'lesson3': 'Shell')} #注意和dict1不同(lesson首字母小写),原因是字典中的键是区分大小写的

说明:字典的键是区分大小写的。

获取字典的值

访问字典中的元素有2种方法。第1种是通过key值获取相应的value值,第二种是通过字典函数get()来获取。

(1)通过key值获取相应的value值。语法格式为:value = dict[key]。具体实例如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> dict1 = {'Lesson1': 'Python'}
>>> dict1['Lesson1']
'Python'
>>> dict1['Lesson2'] #不存在对应的键值,返回KeyError报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'Lesson2'

(2)通过get()函数获取value值,get()函数使用格式如下:

dict.get(key[,default_value])

说明:参数key表示字典的键值,参数default_value可以作为get()的返回值,默认值为None。如果指定default_value参数值,表示如果参数key键值在字典key列表中,则返回对应的value值,如果不在,则返回预先设定的default_value的值。具体实例如下所示:

>>> dict1 = {'Lesson1': 'Python'}
>>> dict1.get('Lesson1')
'Python'
>>> dict1.get('Lesson2')
>>> dict1.get('Lesson2','Perl')
'Perl'

添加字典元素

方法一:直接添加方法,使用格式如下:

dict[key] = value

如果键值key不在字典dict的key列表中,字典dict添加(key:value)的记录。如果已经在key列表中,则修改键值key对应的value值。

dict['Lesson3'] = 'Perl'

举个例子,假设字典dict中不存在键名为Lesson3的字符串,则直接添加。如果已存在,则刷新值为Perl字符串。实例如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> dict1 = {'Lesson1': 'Python'}
>>> dict1['Lesson3'] = 'Perl'
>>> dict1
{'Lesson3': 'Perl', 'Lesson1': 'Python'}
>>> dict1 = {'Lesson3': 'Python'}
>>> dict1['Lesson3'] = 'Perl'
>>> dict1
{'Lesson3': 'Perl'}

方法二:通过调用setdefault()函数方法实现。格式如下:

dict.setdefault(key[,default_value])

如果索引key在字典key列表中,则返回对应的value值,如果不在key列表中,则添加新索引key和value在字典中,并反馈default_value值,默认值 为None。使用实例如下:

>>> dict1 = {'Lesson1': 'Python'}
>>> dict1.setdefault('Lesson1')
'Python'
>>> dict1.setdefault('Lesson2')
>>> dict1
{'Lesson2': None, 'Lesson1': 'Python'}
>>> dict1.setdefault('Lesson3','Shell')
'Shell'
>>> dict1
{'Lesson3': 'Shell', 'Lesson2': None, 'Lesson1': 'Python'}

获取字典所有keys、Values或者key-valu键值对

(1)获取字典的所有"键"-"值"元素。通过调用字典的items()方法实现,返回的是(key,value)元组组成的列表。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.items()
[('Lesson3', 'Shell'), ('Lesson2', 'Java'), ('Lesson1', 'Python')]

(2)获取字典的中key组成的列表。通过调用字典的keys()方法实现。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.keys()
['Lesson3', 'Lesson2', 'Lesson1']

(3)获取字典的中value组成的列表。通过调用字典的values()方法实现。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.values()
['Shell', 'Java', 'Python']

判断指定key是否存在字典

判断字典中是否存在键值为k的元素。通过调用字典has_key()方法实现。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.has_key('Lesson1')
True
>>> dict1.has_key('Lesson4')
False

删除字典元素。

方法一:通过调用内置函数del实现。实例如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> del dict1['Lesson1']
>>> dict1
{'Lesson3': 'Shell', 'Lesson2': 'Java'}

方法二:通过调用字典的pop()函数实现。pop()函数格式如下:

dict.pop(key[,default_value])

pop()函数必须指定参数索引key才能删除对应的值。如果索引key在字典key列表中,则返回索引key对应的value值。如果不存在,则返回预先设置的default_value值,如果未设置,会爬出KeyError异常信息。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.pop('Lesson3')
'Shell'
>>> dict1
{'Lesson2': 'Java', 'Lesson1': 'Python'}
>>> dict1.pop('Lesson3','Perl')
'Perl'

方法三:调用字典的clear()函数,清除字典的所有内容。实例如下:

>>> dict1 = {'Lesson1': 'Python', 'Lesson2': 'Java', 'Lesson3': 'Shell'}
>>> dict1.clear()
>>> dict1
{}

字典排序

字典的排序可以通过使用sorted()函数实现,实例如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> dict = {'2':"Python",'1':"Java",'3':"C++"}
>>> sorted(dict.items(),key=lambda d:d[0])
[('1', 'Java'), ('2', 'Python'), ('3', 'C++')]
>>> sorted(dict.items(),key=lambda d:d[1])
[('3', 'C++'), ('1', 'Java'), ('2', 'Python')]

也可以使用如下方法对值进行排序,先使用zip进行反转

>>> sorted(zip(prices.values(),prices.keys()))
[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (205.55, 'IBM'), (612.78, 'AAPL')]

说明:如果存在values相同的情况下,则会按照key的大小进行排序。如下:

>>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 612.78, 'HPQ': 37.20,'FB': 10.75 }
>>> sorted(zip(prices.values(),prices.keys()))
[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME'), (612.78, 'AAPL'), (612.78, 'IBM')]

计算字典最大值和最小值

通过使用zip()将字典键和值反转,再使用min()和max()函数计算。

>>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
>>> min_price = min(zip(prices.values(),prices.keys()))
>>> print(min_price)
(10.75, 'FB')
>>> max_price = max(zip(prices.values(),prices.keys()))
>>> print(max_price)
(612.78, 'AAPL')

获取字典相同元素

获取两个字典相同的键、值或者items。可以通过集合运算的方式获取。

>>> dic_a = {'x':1,'y':2,'z':3}
>>> dic_b = {'w':10,'x':11,'y':2}
>>> dic_a.keys() & dic_b.keys()
{'x', 'y'}
>>> dic_a.keys() - dic_b.keys()
{'z'}
>>> dic_a.items() & dic_a.items()
{('z', 3), ('x', 1), ('y', 2)}

这些类型的操作额可用来修改或过滤掉字典中的内容。使用字典推导式代码如下:

>>> dic_c = { key:dic_a[key] for key in dic_a.keys() - {'z','w'}}
>>> print(dic_c)
{'x': 1, 'y': 2}

创建有序字典

可以使用collections模块中的OrderedDict类,当对字典迭代时,它会严格按照元素初始添加的顺序进行。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> from collections import  OrderedDict
>>> prices = OrderedDict()
>>> prices['ACME'] = 45
>>> prices['AAPL'] = 46
>>> prices['IBM'] = 47
>>> for key in prices:
...   print(key,prices[key])
...
('ACME', 45)
('AAPL', 46)
('IBM', 47)

从字典中提取子集

从指定的字典中按照键或者值进行过滤获取字典子集。

>>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
>>> p1 = {key:value for key, value in prices.items() if value > 20}
>>> print(p1)
{'HPQ': 37.2, 'AAPL': 612.78, 'ACME': 45.23, 'IBM': 205.55}
>>> tech_name = {'ACME', 'AAPL', 'IBM'}
>>> p2 = {key:value for key, value in prices.items() if key in tech_name}
>>> print(p2)
{'AAPL': 612.78, 'IBM': 205.55, 'ACME': 45.23}

找到最大或最小的N个元素

使用heapq模块中的两个函数nlargest()和nsmallest()获取最大和最小的N个元素。

>>> import heapq
>>> prices = {'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20,'FB': 10.75 }
>>> large3_lst = heapq.nlargest(3,zip(prices.values(),prices.keys()))
>>> print(large3_lst)
[(612.78, 'AAPL'), (205.55, 'IBM'), (45.23, 'ACME')]
>>> small3_lst = heapq.nsmallest(3,zip(prices.values(),prices.keys()))
>>> print(small3_lst)
[(10.75, 'FB'), (37.2, 'HPQ'), (45.23, 'ACME')]

Python字典数据类型及基本操作相关推荐

  1. 【Python】Python常用数据类型的基本操作(长文系列第①篇)

    长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python ...

  2. 牛逼!Python常用数据类型的基本操作(长文系列第①篇)

    长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python ...

  3. 牛逼!Python常用数据类型的基本操作(长文系列第一篇)

    我是你们的教授,关注我,带你玩转Python! 长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python ...

  4. python字典数据类型笔记_Python学习笔记整理(六)Python中的字典

    一.字典介绍 字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型.列表是有序的对象结合,字典是无序的对象集合.两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通 ...

  5. python字典数据类型笔记_python笔记2-数据类型:元组、字典常用操作

    元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. tp=(1,2,3,'a','b' ...

  6. python中字典是几维数据_详解Python字典数据类型

    字典的定义 dictionary(字典)是除列表以外 Python之中最灵活的数据类型. 字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息. 和列表的区别:列表是有序的对象集合,字典是 ...

  7. python字典数据类型笔记_python笔记--数据类型--字典

    本文为我学习python的笔记,因本人的编程技术才刚刚入门,所以笔记中可能会有一些错误,希望大家能友好的帮我指正出来 本文文字内容均为原创,请勿私自转载 图片来自互联网,侵删 字典(dictionar ...

  8. 11个好用到起飞的「Python字典」知识点!

      人生苦短,快学Python! 关于Python字典,算是Python中相当重要的数据类型了.在你学会基础知识后,字典这个概念,将会伴随着你后面的学习和工作. 因此,这里有几个相当重要的知识点,大家 ...

  9. Python数据类型中的字典-创建和基本操作

    Python当中字典的创建和基本操作 本章 含有 字典定义 及操作 l  字典定义 l  基本操作 l  常用方法 列表也是常用的数据类型-列表是最灵活的一个,甚至可以当成一个小的数据库,用来存储数据 ...

最新文章

  1. 转强大Vim的配额置
  2. 人工智能筑起网络安全“铜墙铁壁”
  3. 跨域资源共享的10种方式(转)
  4. comparator java_java:Comparator比较器
  5. python条形图间距-Python-Matplotlib 5 条形图
  6. python如何调用文件进行换位加密_python 换位密码算法的实例详解
  7. 超级计算机 26010,全球最强超级计算机搭载的SW26010处理器解析
  8. 中国3大移动公司(电信,联通,移动)频率分配大全(GSM,CDMA,CDMA2000,WCDMA,TD-SCDMA,LTE TD,FDD)
  9. dockerfile mysql例子_docker-compose 实用示例
  10. gin 源码解析 - 详解http请求在gin中的流转过程
  11. Ubuntu 16.04中zabbix显示 :Zabbix server is not running:te information displayed may not be current.
  12. 190410每日一句
  13. 下列不是python元组的定义方式_python 笔试题
  14. pyinstaller系列之十一:exe 反编译到 源码 尝试
  15. 《完全写作指南》读书笔记
  16. xcode打包ipa配置手动配置证书
  17. 不知道CAD坐标系,如何做到CAD与卫星影像无偏叠加?
  18. postman全方位讲解(有空看下)
  19. 【重识云原生】第六章容器基础6.4.10.3节——StatefulSet实操案例-部署WordPress 和 MySQL
  20. 小米手环7模拟加密门禁卡

热门文章

  1. nodeJs express mongodb 建站(mac 版)
  2. 论如何优雅的处理回文串 - 回文自动机详解
  3. 配置Apache服务器的PHP运行环境
  4. 如何绘制类似仓库的平面位置图
  5. 热闹庆祝51CTO第二期线下活动圆满完成
  6. cpu使用率 htop显示_用top、vmstat、Htop、sar命令在Linux系统中检查CPU使用率/利用率...
  7. 数据结构哪本书比较好_东莞工厂电动伸缩门固定在哪一边比较好?
  8. ABAP:SAP报表性能的优化
  9. SAP与Ariba在数据分析领域的互补共赢
  10. SAP中如何更改供应商账户组