关于IT运维技术的
最佳实践博客网站

优雅的使用Python字典

字典是python中唯内建的映射类型。典中的值并没有特殊的顺序,但是都存储在一个特定的键(Key)下。键可以是数字、字符串甚至是组。

构造字典的目的,不管是现实中的字典还是在python中的字典,都是为了可以通过轻松查找某个特定的词语键),从而找到它的定义(值)。

一、创建Python字典和初始化Python字典

Python字典由多个键以及对应的值构成的键值对关系,

Python有两种方法可以创建字典

1、第一种是使用花括号:

website = {}
website = {"title": "菜鸟HOW站长", "description": "关于IT运维技术的最佳实践",
           "keywords": "Linux运维,Python开发,自动化运维,服务器监控与性能",
           "program": 'WordPress',
           "version": 4.4}

2、另一种是使用内建函数dict:

author = dict()
author = dict(id=1, name="bingoku", first_name="吴", last_name="彬", nickname="菜鸟", url="https://www.cnhzz.com", description="菜鸟HOW站长的最佳实践")

3、还有一种使用fromkeys()方法从序列键和值设置为value来创建一个新的字典。

使用方法:dict.fromkeys(seq[, value]))

参数:

  • seq — 这是将用于字典的键准备的值的列表。
  • value — 这是可选的,如果提供的话则值将被设置为这个值

返回值:此方法返回字典。

一般此方法都用于预创建字典的键,根据需求为键赋值。

>>> base_values = ["name", "age", "sex"]
>>> test = dict.fromkeys(base_values)
>>> test['age']=25
>>> test
{'age': 25, 'name': None, 'sex': None}
>>>

二、Python字典基本操作:

1、返回字典键值对的数量。

>>> len(test)
3

2、返回字典键上的值。

>>> test['age']
25

3、将值关联到键上。

>>> test['name']="bingoku"
>>> test
{'age': 25, 'name': 'bingoku', 'sex': None}

4、删除键值项。

>>> del test['sex']
>>> test
{'age': 25, 'name': 'bingoku'}

5、检测字典中是否包含某个键

>>> test
{'age': 25, 'name': 'bingoku'}
>>> "name" in test
True
>>> "age" in test
True

6、清除字典所有的项(键值对)

>>> test
{'age': 25, 'name': 'bingoku'}
>>> test.clear()
>>> test
{}

7、返回(复制)一个具有相同键值对的新字典

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test2 = test.copy()
>>> test2['name']="jet"
>>> test2
{'age': None, 'name': 'jet', 'sex': None}
>>>

8、获取字典键的值

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test["age"]=25
>>> test
{'age': 25, 'name': None, 'sex': None}
>>> test.get("age")
25

9、把字典里面的键值对项返回成列表或者可以迭代的对象。

字典键值项返回成由元组组成的列表序列

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test.items()
[('age', None), ('name', None), ('sex', None)]

字典键值项返回成可迭代的对象

>>> test
{'age': None, 'name': None, 'sex': None}
>>> it=test.iteritems()
>>> it
<dictionary-itemiterator object at 0x10df287e0>

在很多情况下使用iteritems会更加高效(尤其是想要选代结果的情况下)

10、keys()将字典中的键以列表形式返回。iterkeys()返回针对键的迭代器。

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test.keys()
['age', 'name', 'sex']
>>> test.iterkeys()
<dictionary-keyiterator object at 0x10df28838>

11、pop方法用来获取对应于给定键的值,然后将这个键值对从典中移除。

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test.pop("age")
>>> test
{'name': None, 'sex': None}

12、popitem方法类似于list.pop.,后者会弹出列表的最后一个元素。但不同的是, popitem弹出随机的项,因为字典并没有“最后的元素”或者其它有关顺序的慨念。若想个接个地移除并处理项,这个方怯就非常有效了(因为不用首先获取键的列表)。

>>> test
{'age': None, 'name': None, 'sex': None}
>>> test.popitem()
('age', None)
>>> test.popitem()
('name', None)
>>> test.popitem()
('sex', None)
>>> test.popitem()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>> test
{}

13、Python 字典(Dictionary) setdefault() 函数和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。

>>> test
{'age': 25, 'address': 'beijing', 'name': 'bingoku', 'sex': 'male'}
>>> test.setdefault("age",None)
25
>>> test.setdefault("addr",None)
>>> test
{'addr': None, 'age': 25, 'address': 'beijing', 'name': 'bingoku', 'sex': 'male'}
>>> test.setdefault("tel","177xxxxxxxx")
'177xxxxxxxx'
>>> test
{'tel': '177xxxxxxxx', 'addr': None, 'age': 25, 'sex': 'male', 'address': 'beijing', 'name': 'bingoku'}

14、update方法可以利用个字典项更新另外个字典的键值项

>>> d = {'title': "菜鸟HOW站长", 'url': "https://www.cnhzz.com", "changed": "20160301"}
>>> d
{'tite': '\xe8\x8f\x9c\xe9\xb8\x9fHOW\xe7\xab\x99\xe9\x95\xbf', 'url': 'https://www.cnhzz.com', 'changed': '20160301'}
>>> d = {'title': "菜鸟HOW站长", 'url': "https://www.cnhzz.com", "changed": "20160301"}
>>> x = {'title': "CNHZZ"}
>>> d.update(x)
>>> d
{'url': 'https://www.cnhzz.com', 'changed': '20160301', 'title': 'CNHZZ'}

15、values方法以列表形式返回字典中的值 和 itervalues 返回值得迭代器。

>>> d = {}
>>> d[1] = 1
>>> d[2] = 2
>>> d[3] = 3
>>> d[4] = 1
>>> d.values()
[1, 2, 3, 1]

16、Python字典-键值交换

>>> info = {'title': "菜鸟HOW站长","url": "https://www.cnhzz.com", "webmaster": "bingoku"}
>>> info
{'url': 'https://www.cnhzz.com', 'webmaster': 'bingoku', 'title': '\xe8\x8f\x9c\xe9\xb8\x9fHOW\xe7\xab\x99\xe9\x95\xbf'}
>>> info = {v:k for k, v in info.items()}
>>> info
{'\xe8\x8f\x9c\xe9\xb8\x9fHOW\xe7\xab\x99\xe9\x95\xbf': 'title', 'https://www.cnhzz.com': 'url', 'bingoku': 'webmaster'}
>>>

 

 

 

 

 

赞(0)
未经允许不得转载:菜鸟HOW站长 » 优雅的使用Python字典
分享到: 更多 (0)

留下你的脚印

  订阅  
关注动态