《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第5章 字典和结构化数据】

1.  字典数据类型

字典格式如下:

{'size': 'fat', 'color': 'gray', 'disposition': 'loud'},

字典的索引被称为键,键及其指被称为键值对。

1)  字典与列表

列表是有序的,字典是无序的,这是列表和字典的主要区别。所以字典不能应用切片。示例:

>>> spam = ['cats', 'dogs', 'moose']
>>> bacon = ['dogs', 'moose', 'cats']
>>> spam == bacon
False
>>> eggs = {'name': 'Zophie', 'species': 'cat', 'age': '8'}
>>> ham = {'species': 'cat', 'age': '8', 'name': 'Zophie'}
>>> eggs == ham
True

如果访问字典中不存在的键将会报keyError异常。

2)  keys()、values()和 items()方法

keys(),values()和items()返回类似列表的值,分别对应字典的键,值,键值对。示例:

>>> spam = {'color': 'red', 'age': 42}
>>> spam.keys()
dict_keys(['color', 'age'])
>>> spam.values()
dict_values(['red', 42])
>>> spam.items()
dict_items([('color', 'red'), ('age', 42)])

使用list()方法可以将它们转成列表,示例:

>>> spam = {'color': 'red', 'age': 42}
>>> list(spam.keys())
['color', 'age']

3)  检查字典中是否存在键或值

和列表一样,可以使用in和not in字典中是否存在某个值。示例:

>>> spam = {'species':'cat','age':'8','name':'Zophie'}
>>> 'species'in spam.keys()
True
>>> 'species'in spam.values()
False
>>> 'species'in spam.items()
False
>>> 'species'in spam
True

如上,'species'in  spam其实是'species'in spam.keys()的简写。

4)  get()方法(获取指定键的值)

get()方法有两个参数:要取得其值的键;如果该键不存在,返回的备用值。如果省略第二个,那么键不存在的时候会返回None.示例:

>>> picnicItem = {'apple':'5','cup':'2'}
>>> picnicItem.get('apple',0)
'5'
>>> picnicItem.get('eggs',0)
0
>>> print(picnicItem.get('eggs'))
None

5)  setdefault()方法

setdefault()方法提供了一种方式,在一行中完成这件事。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。示例:

>>> spam = {'name': 'Pooka', 'age': 5}
>>> spam.setdefault('color', 'black')
'black'
>>> spam
{'color': 'black', 'age': 5, 'name': 'Pooka'}
>>> spam.setdefault('color', 'white')
'black'
>>> spam
{'color': 'black', 'age': 5, 'name': 'Pooka'}

2.  漂亮打印(pprint())

如果程序中导入 pprint 模块,就可以使用 pprint()和 pformat()函数。pprint()可以打印出排序后的键,如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用

pprint.pformat()。示例:

import pprint
message = 'It was a bright cold day in April, and the clocks were striking\
thirteen.'
count = {}
for character in message:
    count.setdefault(character, 0)
    count[character] = count[character] + 1
#最后两行的结果是等价的
pprint.pprint(count)
print(pprint.pformat(count))

                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值