最近再看python机器学习相关的代码时候,看到很多关于字典的操作,自己印象不那么深刻了,在这里自己也整理复习一下,跟大家分享出来,如果错误的地方,请留言,看到后就会修改,感谢!

 

Python 中的字典是Python中一个键值映射的数据结构,相关的操作如下:

 

1.1 创建字典

Python有两种方法可以创建字典,第一种是使用花括号,另一种是使用内建函数dict

1 dictionary1 = {}   #方法一
2 dicttionary1 = dict()   #方法二

1.2 对字典进行初始化

Python可以在创建字典的时候初始化字典,就像定义变量之后直接对其初始化是类似的,集体操作如下

1 dictionary1 = {“name”:'wind_under_the_wing'}      #方法一
2 dictionary2 = dinct(name='wind_under_the_wing')    #方法二

其实第二种方法是容易引发问题的,在这里把代码晒出来大家感兴趣的话自己去分析

1 key = 'name'
2 dictionary1 = {key:'wind_under_the_wing'}     #{'name':"wind_under_the_wing'}
3 dictionary2 = dict(key='wind_under_the_wing')   #{'key':'wind_under_the_wing'}

使用fromkeys()方法从列表中获取元素作为键值

>>> info = {}.fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'])
>>> info
{'blog': None, 'name': None}
>>> info = dict().fromkeys(['name', 'blog'], 'wind-under-the-wing')
>>> info
{'blog': 'wind-under-the-wing', 'name': 'wind-under-the-wing'}

使用字典推导式初始化字典:类似列表推导式,我们可以通过一个for循环表达式来创建一个字典

1 >>>dd = {x: x*x for x in range(5)}
2 
3 >>>dd
4 >>>{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

 

1.3 获取键值

>>> info = {'name':'linux', 'blog':'wind-under-the-wing'}
>>> info['name']
'linux'

但是如果获取不存在的键的值就会触发的一个KeyError异常,字典有一个get方法,可以使用字典get方法更加优雅的获取字典

>>> info = dict(name= 'linux', blog='wind-under-the-wing')
>>> info.get('name')
'linux'
>>> info.get('blogname')
None
>>> info.get('blogname', 'linux')
'linux'

我们看到使用get方法获取不存在的键值的时候不会触发异常,同时get方法接收两个参数,当不存在该键的时候就会返回第二个参数的值 我们可以看到使用get更加的优雅

 

1.4 字典元素修改

1 >>>myd = dict(a=1, b=2, c=3)
 2 
 3 >>>myd['a'] = 9  # 改变某个键的值
 4 
 5 >>>myd
 6 >>>{'a': 9, 'b': 2, 'c': 3}
 7 
 8 >>>myd['e'] = 8  # 增加新的键值对
 9 >>>myd
10 >>>{'a': 9, 'b': 2, 'c': 3, 'e': 8}
11 
12 >>>del myd['e']  # 删除某个键及其值
13 >>>myd
14 >>>{'a': 9, 'b': 2, 'c': 3}
15 
16 >>>myd.pop('c')  # 删除某个键及其值并得到其值
17 >>>3
18 
19 >>>myd
20 >>>{'a': 9, 'b': 2}

尤其要注意pop()删除某个键值对,并且得到其中的值

1.5 字典删除

可以调用Python内置关键字del来删除一个键值

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info
{'blog': 'linuxzen.com', 'name': 'cold'}
>>> del info['name']
>>> info
{'blog': 'linuxzen.com'}

 

同时也可以使用字典的pop方法来取出一个键值,并删除

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.pop('name')
'cold'
>>> info
{'blog': 'linuxzen.com'}

1.6 其他操作

获取所有key

>>> info = dict(name='cold', blog='linuxzen.com')
>>> info.keys()
['blog', 'name']

 

获取key,value并循环

>>> info = dict(name='cold', blog='linuxzen.com')
>>> for key, value in info.items():
...     print key, ':',  value
...
blog : linuxzen.com
name : cold