来自 编程应用 2019-09-04 19:49 的文章
当前位置: 六合联盟网 > 编程应用 > 正文

当索引不好用时

字典由多少个键及与其对应的值构成的对构成(把键值对改为项),每种键和它的值时期用冒号(:)隔离,项之间用逗号(,)隔开分离,而任何字典由一对大括号括起来。空字典由五个大括号组成:{}

字典是Python中有一无二内建的映射类型.字典中的值并不曾特殊的一一,不过都存款和储蓄在叁个一定的键(Key)下.键能够是数字/字符串甚至是元组.

dict函数

1. 字典的利用

  • 表示多少个玩耍棋盘的处境,各个键都以由坐标值组成的元组;
  • 积累文件修改时间,用文件名作为键.
  • 数字电话/地址簿.

能够用dict函数,通过其余映射只怕(键,值)这样的队列对创立字典

2. 成立和使用字典

  • 字典能够透过上边包车型地铁主意创立 :
    phonebook = {'Kevin':'520','Leona':'1314'}

字典由多少个键及其相应的值构成的键-值对构成,在上边包车型客车事例中,名字是键,数字则是值.各个键和它的值时期用冒号(:)隔断,项之间用逗号(,)隔开,而全数字典都是由一对大括号括起来.空字典(不富含另外项)由三个大括号组成,像那样 : {}.

>>> items=[(,),(,42>>> d=>>>: 42, : >>> d[

2.1 dict函数

dict函数,通过其它映射(譬如其余字典)恐怕(键,值)对的队列塑造字典.

>>> items = [('name','kevin'),('age',21)]
>>> d = dict(items)
>>> d['name']
'kevin'
>>> 

dict函数也得以透过重大字参数来创立字典 :

>>> d = dict(name="Kevin",age=42)
>>> d
{'age': 42, 'name': 'Kevin'}
>>> 

dict函数也得以经过机要字参数来创设字典:

2.2 基本字典操作

字典的宗旨行为在众多上边与连串(sequence)类型 :

  • len(d)返回d中项(键-值对)的数量;
  • d[k]回去关联到键k上的值;
  • d[k] = v 将值v关联到见k上;
  • del d[k] 删除键为k的项
  • k in d 检查d中是还是不是有含有键为k的项.
  • 键类型 : 字典的键不自然为整数类型,键可以是随机的不可变类型,例如浮点型(实型),字符串或许元组.
  • 自动加多 : 尽管键起首在字典中并不设有,也得以为它赋值,那样字典就能树立新的项.
  • 成员身价 : 表明式 k in d(d为字典)查找的键,并不是值.表达式v in l(l为列表)则用来寻找值,实际不是索引.

键可以是轻便不可变类型 :

>>> x = {}
>>> x[12] = 'kevin'
>>> x
{12: 'kevin'}
>>> 
>>> d=dict(name=,age=42>>>: 42, : }

2.3 字典的格式化字符串

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

主导字典操作:

2.4 字典方法

  • clear
    clear方法清除字典中存有的项.这些是原地操作,所以无再次回到值.
>>> d = {}
>>> d['name'] = 'kevin'
>>> d
{'name': 'kevin'}
>>> d.clear()
>>> d
{}
>>> 
  • copy
    copy方法重临贰个持有一样键-值对的新字典.(这一个方式完结的浅复制,因为值笔者正是一样的,实际不是别本.)
  >>> x = {'username':'admin','pasword':123456}
>>> y = x.copy()
>>> y
{'username': 'admin', 'pasword': 123456}
>>> 

只是,假如改换了有个别值(原地修改,实际不是替换),原始的值也会退换,因为一样的值存款和储蓄在原字典中.模块的deepcopy函数来成功操作.

>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Kevin','Leona']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d['names'].append('Clive')
>>> c
{'names': ['Kevin', 'Leona', 'Clive']}
>>> 
  • fromkeys
    fromkeys方法应用给定的键建构新的字典,各种键都对应二个私下认可的的值None.
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> 
  • get
    get方法是个越来越宽松的字典项的法子,当使用get访谈叁个不设有的键时,未有任何特别,而取得了None值.还是能自定义"暗中认可值",替换None.
>>> d.get('name','N/A')
'N/A'
  • has_key
    has_key方法能够检查字典中是或不是有特定的键.表明式d.has_key(k)相当于表明式k in d.
>>> d = {'name':'kevin'}
>>> d.has_key('name')
True
>>> d.has_key("password")
False
>>> 
  • items和iteritems
    items方法将富有字典的项以列表方式赶回,列表中的每一样都意味着为(键,值)对的方式.可是项在再次来到时并从未依照特定的次序.

  • keys和iterkeys
    keys方法将字典中的键以列表方式重回,而iterkeys则赶回针对键的迭代器.

  • pop
    pop方法用来获得相应给定键的值,然后将这么些键-值对从字典中移除.

>>> d = {'x':1,'y':2}
>>> d.pop('x')
1
>>> d
{'y': 2}
>>> 
  • popitem
    popitem方法类似于list.pop,前者会弹出列表的最后贰个成分.

  • setdefault
    setdefault方法在某种程度上连串于get方法,能够获取与给定键相关联的值,除了那些之外,setdefault还是能够在字典中不满含有给定键的景观下设定相应的键值.

>>> d.setdefault('name','N/A')
'N/A'
>>> d['name'] = 'kevin'
>>> d.setdefault('name','N/A')
'kevin'

能够见见,当键海市蜃楼的时,setdefault再次回到私下认可值并且相应地换代字典.借使键存在,那么就回来与其相应的值,但不改造字典.私下认可值是可选的,那点和get同样.

  • update
    update方法能够使用三个字典项立异其他八个字典 :
>>> d = {'title':'python Web Site','url':'http://www.python.org'}
>>> x = {'title':'python language website'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'title': 'python language website'}
>>> 
  • values和itervalues
    values方法以列表的格局重临字典中的值(itervalues再次回到值的迭代器).与重返键的列表分歧的是,重返值的列表中得以饱含重复的成分.
>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d.values()
[1, 2]
>>> 
  • 字典的主干行为在无数地点与系列类似:
  • len(d)返回d中项(键-值对)的数量
  • d[k]回去关联到键k上的值
  • d[k]=v将值v关联到键k上
  • del d[k]去除键为k的项
  • k in d检查d中是还是不是带有键为k的项

3. 小结

  • **映射 : **炫丽能够行使任性不可变对象标志成分,最常用的项目是字符串和元组.
  • **使用字典格式化字符串 : **能够通过在格式化表达中归纳名称(键)来对字典应用字符串格式化操作.当在字符格式化中动用元组时,还索要对元组中每贰个成分都设定"格式化表达符".在使用字典时,全部的注脚符能够比在字典中用到的项少.
  • **字典的艺术 : **字典相当多方法,调用的方法和调用列表以及字符串方法的方法一样.

说明:

键类型:字典的键不自然为整型数据,也说不定是任何不可变类型

机关抬高:就算极度键开头在字典中并子虚乌有,也得以为它分配多少个值,这样字典就能够创设新的项,而不能够将值关联到列表范围之外的目录上

成员身价:表达式k in d(d为字典)查找的是键,并不是值。表明式v in l(l为列表)则用来搜寻值,并非索引

字典方法:

1、clear

clear方法清除字典中具备的项,那是个原地操作,所以无再次回到值

>>> d=>>> d[]=
>>> d[]=42
>>>: 42, : >>> return_value=>>>>>> 

虚构上边三种景况:

>>> x=>>> y=>>> x[]=
>>>: >>> x=>>>: >>> 
>>> x=>>> y=>>> x[]=
>>>: >>>>>>

2、copy

copy方法重临三个有着同样键-值对的新字典(这几个主意实现的是浅复制)

>>> x={:,:[,,>>> y=>>> y[]=
>>> y[].remove(>>>: , : [, >>>: , : [, ]}

从地点的代码能够观察,当别本中替换值的时候,原字典不受影响,不过,借使改造了有个别值,原始的字典也会改造

制止这一个标题标一种艺术便是选取深复制,复制其蕴涵的兼具值,能够采纳copy模块的deepcopy函数来实现操作:

>>>  copy >>> d=>>> d[]=[,>>> c=>>> dc=>>> d[].append(>>>: [, , >>>: [, ]}

3、fromkeys

fromkeys方法运用给定的键塑造新的字典,各类键暗中同意对应的值为None

>>> {}.fromkeys([,: None, : None}

4、get

get方法是个越来越宽松的看望字典项的诀窍。一般来说,假使筹算访谈字典中不设有的项时就能出错:

>>> d=>>>  d[, line 1,  <module>
     d[
>>>  d.get()

使用get就不会

图片 1::::::=::=raw_input( request=raw_input( key= request==:key= request==:key====person.get(key, %>>> ================================ RESTART ================================ >>> 使用get的简易数据库示例

5、has_key

has_key方法能够检查字典中是还是不是含有给出的键,表达式d.has_key(k)也便是表明式k in d

>>> d=>>> d.has_key(>>> d[]=
>>> d.has_key(

6、items和iteritems

items方法将具备的字典项以列表的办法赶回,这个列表项中的每一类都来源于于(键,值),不过项在回来时并从未非凡的一一

>>> d={:,:,>>>, ), (, 0), (, )]

iteritems方法的效果大概同样,不过会回来贰个迭代器对象实际不是列表:

>>> it=>>><dictionary-itemiterator object at 0x0280F6F0>
>>>, ), (, 0), (, )]

7、pop

pop方法用来赢得对应于给定键的值,然后将以此键-值对从字典中移除

>>> d={:1,:2>>> d.pop(1
>>>: 2}

8、popitem

popitem方法类似于list.pop,前面一个会弹出列表的末梢三个成分。可是popitem弹出自便的项

>>> d={:,:,>>>: , : 0, : >>>, >>>: 0, : }

9、setdefault

setdefault方法在某种程度上类似于get方法,除了这么些之外,setdefault还能在字典中不分包给定键的图景下设定相应的键值

>>> d=>>> d.setdefault(,
>>>: >>> d[]=
>>> d.setdefault(,
>>>: }

10、update

update方法能够采取多少个字典项创新另三个字典:

>>> d=:::>>> x={:>>>>>>: , : , : }

11、values和itervalues

values方法以列表的形式重回字典中的值(itervalues重回值的迭代器),与重临键的列表差别的是,再次来到值的列表中得以富含重复的因素:

>>> d=>>> d[1]=1
>>> d[2]=2
>>> d[3]=3
>>> d[4]=1
>>>1, 2, 3, 1]

 

...

本文由六合联盟网发布于编程应用,转载请注明出处:当索引不好用时

关键词: