创新路
我们一直在努力

Python入门系列(5):内置数据结构-字典(Editing…)

序(ji)言(tang)部分

blob.png

《左传·庄公十年》中的《曹刿论战》有云:一鼓作气,再而衰,三而竭

  做一件事,如果断断续续。被各种打断,你第一感觉是什么?放弃!心烦!三心二意!无论你当时再想什么。如果我告诉你,你做的这件事情的名字叫“梦想”。你还会选择坚持吗?这件事如同“经典”一样不会因为时间的退却而消逝,反而因为时间的磨砺而越显得珍贵。

课程拓扑图

image.png

字典

字典的几个注意细节:

1)字典是一个key value 结构

2)字典的value可以是任意值

3)字典的key必须是可hash的值

4)字典的key是唯一的

5)字典不支持切片功能


字典-定义字典

>>> d1 = {}
>>> type(d1)    # 定义空字典创建
<class 'dict'>

>>> d2 = {"Name":'loki',"Age":16}     # 直接赋值创建
>>> d2
{'Age': 16, 'Name': 'loki'}           # Note:从字典存储的顺序来看是无序


In [52]: d3 = dict(name='loki',age=16,sex='Man') # 通过关键字dict和关键字参数创建

In [53]: d3
Out[53]: {'age': 16, 'name': 'loki', 'sex': 'Man'}

In [55]: l1 = [('V', 1), ('I', 2), ('P', 3)]  # 通过二元组列表创建

In [56]: type(l1)
Out[56]: list

In [57]: d4 = dict(l1)

In [58]: d4
Out[58]: {'I': 2, 'P': 3, 'V': 1}

字典-增加与修改

下标操作

In [19]: d1  # 这里用定义好的一个字典“d1”
Out[19]: {'a': 1, 'b': 2, 'c': 3}

In [20]: d1['a']  # 访问d1字典里面的key“a”,返回value“1”
Out[20]: 1

In [21]: d1['b']  # 同理
Out[21]: 2

In [22]: d1['a']= "This is A"  # 修改字典里面“a”的value

In [23]: d1["c"]= "This is C"  # 同理

In [24]: d1  # 最后查看结果
Out[24]: {'a': 'This is A', 'b': 2, 'c': 'This is C'}

update(…)

    D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.

    If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]

    If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v

    In either case, this is followed by: for k in F:  D[k] = F[k]


dict.update()

update的参数可以是以下几种情况:

  • 字典

  • 二元组构成的可迭代对象

  • 关键字参数


In [34]: d1 = {}

In [35]: d2 = {"name":"d2"}

In [36]: d1.update(d2)  # 直接使用字典

In [37]: d1
Out[37]: {'name': 'd2'}

In [82]: t1  # 使用二元组构成的可迭代对象
Out[82]: ('aa', 11)

In [83]: t2
Out[83]: (3, 4)

In [84]: d5 = {}

In [85]: d5.update([t1,t2])

In [86]: d5
Out[86]: {'aa': 11, 3: 4}

In [69]: d1
Out[69]: {'Age': 16, 'Height': 1.75, 'Name': 'loki3'}   

In [70]: d1.update({'Name':'Cool'})            # update时,如果key相同,会覆盖原来的value

In [71]: d1
Out[71]: {{'Age': 16, 'Height': 1.75, 'Name': 'Cool'}

In [22]: d1 = {}

In [23]: d1.update({'Name':'loki3',"Age":16,"Height":1.75}) # 关键字参数使用字典

In [24]: d1
Out[24]: {'Age': 16, 'Height': 1.75, 'Name': 'loki3'}


In [40]: d3.update(a=22)  # 关键字参数

In [41]: d3
Out[41]: {'a': 22}

In [42]: d3.update(b=33)

In [43]: d3
Out[43]: {'a': 22, 'b': 33}

字典-删除

  • pop

pop(…) method of builtins.dict instance

    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

    If key is not found, d is returned if given, otherwise KeyError is raised

  • popitem

popitem(…) method of builtins.dict instance

    D.popitem() -> (k, v), remove and return some (key, value) pair as a

    2-tuple; but raise KeyError if D is empty.

  • clear

In [95]: Dn   # 创建一个很多key的字典,进行测试
Out[95]: 
{'a': 123,
 'b': 2,
 'c': 345,
 'd': 23,
 'e': 222,
 'f': 111,
 'g': 333,
 'h': 4444,
 'i': 555}

In [96]: Dn.pop('a')  # 删除字典里面‘a’
Out[96]: 123

In [97]: Dn.pop('i')  # 删除字典里面‘i’
Out[97]: 555

字典-访问

get(…) method of builtins.dict instance

    D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.

下标直接访问

In [4]: d1
Out[4]: {'age': 16, 'name': 'loki', 'sex': 'man'}

In [5]: d1.get('name')
Out[5]: 'loki'

In [6]: d1.get('age')
Out[6]: 16

In [7]: d1.get('sex')
Out[7]: 'man'

# 下标直接进行访问
In [11]: d1['age']
Out[11]: 16

In [12]: d1['name']
Out[12]: 'loki'

In [13]: d1['sex']
Out[13]: 'man'

字典-遍历

In [14]: d1  #  直接访问
Out[14]: {'age': 16, 'name': 'loki', 'sex': 'man'}

In [15]: d1.keys()  #  keys
Out[15]: dict_keys(['sex', 'age', 'name'])

In [16]: d1.values()  #  values
Out[16]: dict_values(['man', 16, 'loki'])

In [17]: d1.items()  #  items
Out[17]: dict_items([('sex', 'man'), ('age', 16), ('name', 'loki')])

字典-其他方法

copy

copy(…) method of builtins.dict instance

    D.copy() -> a shallow copy of D

fromkeys

fromkeys(iterable, value=None, /) method of builtins.type instance

    Returns a new dict with keys from iterable and values equal to value.

In [25]: d1
Out[25]: {'age': 16, 'name': 'loki', 'sex': 'man'}

In [26]: d2 = d1.copy()

In [27]: d2
Out[27]: {'age': 16, 'name': 'loki', 'sex': 'man'}

In [38]: l1
Out[38]: ['a1', 'a2', 'a3', 'a4']

In [39]: d1
Out[39]: {'age': 16, 'name': 'loki', 'sex': 'man'}

In [40]: d3 = {}

In [41]: type(d3)
Out[41]: dict

In [42]: d3.fromkeys(l1)
Out[42]: {'a1': None, 'a2': None, 'a3': None, 'a4': None}

In [43]: d3
Out[43]: {}

In [44]: d3 = d3.fromkeys(d1)  

In [45]: d3
Out[45]: {'age': None, 'name': None, 'sex': None}

字典-字典的简单实现

拉链法

开地址法

# 待完善

未经允许不得转载:天府数据港官方信息博客 » Python入门系列(5):内置数据结构-字典(Editing…)

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机