python字典

摘要:
概念一种通过名字引用值的数据结构为映射,而字典是python中唯一内建的映射类型。使用字典格式化的方法,还可以使用模版格式化˃˃˃phonebook={'Beth':'9102','Alice':'2341','Cecil':'3258'}˃˃˃"Cecil'sphonenumberis%s."%phonebook"Cecil'sphonenumberis3258."字典的方法clearcopyfromkeysgethas_keyitemsiteritemskeysiterkeyspoppopitemsetdefaultupdateclear:清除字典中所有的项,包括原始字典中所有的元素,无返回值。python3中不包括这个函数。pop和popitem:pop方法获取对应给定键的值,然后将这个键值对从字典中删除。popitem弹出随机的项,因为字典是无序的,也就不会像列表有最后一个元素的概念。

概念

一种通过名字引用值的数据结构为映射,而字典是python中唯一内建的映射类型。字典由多个键与其对应的值构成,键/值也成为项。每个键值之间用冒号隔开,项之间用逗号隔开,整个字典是由一对大括号括起来。空字典不包括任何项。键可以是数字、字符串和元组,并且唯一,但值不唯一。

某些情况,字典比列表更加适用:

  • 表示游戏棋盘的状态,每个键都是由坐标值组成的元组。
  • 存储文件的修改次数,用文件名作为键。
  • 电话/地址簿

创建与操作

创建

可以通过下面方式来创建,

python字典第1张

也可以通过dict函数来创建

通过序列对来建立:

python字典第2张

通过关键字来创建:

python字典第3张

空字典

dict()

{}

操作

python字典第4张

len(d),返回d中项的数量

d[k],返回关键字k对应的值

d[k]=v,将值v关联到k上

del d[k],删除键为k的项

k in d,检查d中是否含有键为k的项

字典的格式化

在每个转换符%的后面,可以加上键(用圆括号括起来),后面再跟其他说明元素。

使用字典格式化的方法,还可以使用模版格式化

>>> phonebook = {'Beth': '9102','Alice': '2341','Cecil': '3258'}

>>> "Cecil's phone number is %(Cecil)s." %phonebook

"Cecil's phone number is 3258."

字典的方法

clear

copy

fromkeys

get

has_key

items iteritems

keys iterkeys

pop popitem

setdefault

update

clear:清除字典中所有的项,包括原始字典中所有的元素,无返回值(None)。

#例1不使用clear方法

>>> x={}

>>> y=x #x,y指向同一字典

>>> x['key']='value'

>>> y

{'key': 'value'}

>>> x={} #x指向另一新的字典,而原字典不变,y仍指向原来的字典

>>> y

{'key': 'value'}

>>>

#例2使用clear方法清除,清除了原字典

>>> x={}

>>> y=x

>>> x['key']='value'

>>> y

{'key': 'value'}

>>> x.clear() #使用clear()清空了原始字典

>>> y

{}

cpoy:返回一个具有相同键值对的新字典,此方法实现的是浅复制。

python字典第5张

由上可以发现,当在副本中替换值的时候,原始字典不受影响,而进行修改的时候,原始字典也跟着改变了。

但是深复制就能避免这个问题,需要deepcopy函数来完成。

python字典第6张

由上可以发现深度复制的副本可以完全保留原始字典数据。

fromkeys:使用给定的键建立新的字典,每个键默认对应的值为None,也可以自己提供默认值。

>>> {}.fromkeys(['name','age']) #构造一个空字典

{'age': None, 'name': None}

>>> dict.fromkeys(['name','age']) #直接在所有字典的类型dict上面调用

{'age': None, 'name': None}

>>> dict.fromkeys(['name','age'],'(unkown)') #自己提供默认值

{'age': '(unkown)', 'name': '(unkown)'}

get:访问字典项的方法,更为宽松。使用get访问一个不存在的键,不会出现异常,而返回None。也可以自定义默认值。当键存在就是普通字典查询一样。

python字典第7张

has_key:检查字典中是否含有给出的键。python3中不包括这个函数。

python字典第8张

items和iteritems:items将所有的字典以列表的方式返回,返回时没有特殊的顺序。而iteritems会返回一个迭代器而不是列表。

python字典第9张

keys和iterkeys:将字典中的键以列表的形式返回,而iterkeys则返回针对键的迭代器。

python字典第10张

values和itervalues:values以列表的形式返回值,itervalues返回值的迭代器。返回值的列表中可以包含重复的元素。

python字典第11张

pop和popitem:pop方法获取对应给定键的值,然后将这个键值对从字典中删除。popitem弹出随机的项,因为字典是无序的,也就不会像列表有最后一个元素的概念。

python字典第12张

setdefualt:类似get方法。当键不存在的时候,setdefault返回默认值并相应的更新字典;如果键存在,则返回其对应的值,不改变字典。

python字典第13张

update:利用一个字典项更新另一个字典。如键不存在则添加,相同的键则覆盖。

python字典第14张

免责声明:文章转载自《python字典》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C/C++用.ico图片替换.exe图标(VS2017)(转)饮水机电路-工作剖析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转载:pyqt线程间通过 信号/槽 通信

转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时,触发一个信号,槽:响应指定信号的所做的反应,其实信号槽类似于.NET里面的委托、事件,比如Repeater控件类,当行数据绑定后,触发一个ItemDataBo...

python面试1

注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。 1. (1)python下多线程的限制以及多进程中传递参数的方式  python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器,跟单cpu跑多个程...

Python实现自动连接密码本破解wifi

在闲余时间尝试了利用Python实现使用本地无线网卡,自动连接wifi,读取密码本中的密码,迭代尝试密码连接破解wifi,话不多说,代码随上,密码可以从网上下载,也可参考我的密码本: 链接:https://pan.baidu.com/s/1xNEKvurhs6SgdXlCmu_new 提取码:6666 在执行该脚本前,一定要安装pywifi包,--pip...

python之tkinter使用-复选框操作

1 # tkinter复选框操作 2 3 import tkinter as tk 4 5 root = tk.Tk() 6 root.title('问卷调查') 7 root.geometry('220x80') # 设置窗口大小 8 9 flag_1 = False 10 flag_2 = False 11...

python 获取过去几天,过去几个月,过去几年的时间列表

在平时的开发中,需要获取最近几个月,最近几年或者最近几天的时间列表,本文使用了arrow去实现了这几个过程。 def get_day(num): day_list = [] a = arrow.now() # 当前本地时间 for i in range(0, num + 1):...

使用 SCons 轻松建造程序

原文:http://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html 参考:http://www.flatws.cn/article/program/python/2011-06-02/28680.html 前言 make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔...