day05 of python

字典数据类型
像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。在代码中,字典输入时带花括号{}。例:myCat = {'size': 'fat','color':'gray','disposition':'loud'}。字典仍然可以用整数值作为键,就像列表使用整数值作为下标一样,但它们不必从0开始,可以是任意数字。

字典与列表
不像列表,字典中的表项是不排序的。虽然确定两个列表是否相同时,表项的顺序很重要,但在字典中,键-值对输入的顺序并不重要。因为字典时不排序的,所以不能像列表那样切片。尝试访问字典中不存在的键,将导致KeyError出错信息。尽管字典时不排序的,但可以用任意值作为键,这点让你能够用强大的方式来组织数据。

keys()、values()和items()方法
有3个字典方法,它们将返回类似列表的值,分别对应于字典的键、值和键-值对:keys()、vlaues()和items()。这些方法返回的值不是真正的列表,它们不能被修改,没有append()方法。但这些数据类型(分别是dict_keys、dict_values和dict_items)可以用于for循环。请注意,items()方法返回的dict_items值中,包含的是键和值的元组。如果信物通过这些方法得到一个真正的列表,就把类似的列表的返回值传递给list函数。

检查字典中是否存在键或值
前一章提到,in和not in操作符可以检查值是否存在于列表中。也可以利用这些操作符,检查某个键或值是否存在于字典中。例:'name' in spam == 'name' in spam.keys()        'Zophie' in spam.values()。这种情况总是对的:如果想要检查一个值是否为字典中的键,就可以用关键字in(或not in),作用于该字典本身。

get()方法
在访问一个键的值之前,检查该键是否存在于字典中,这很麻烦。好在,在字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值。

setdefault()方法
你常常需要为字典中某个键设置一个默认值,当该键没有任何值时使用它。setdefault()方法提供了一种方法,在一行中完成这件事。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。

漂亮打印
如果程序中导入pprint模块,就可以使用pprint()和pformat()函数,它们将“漂亮打印”一个字典的字。如果字典本身包含嵌套的列表或字典,pprint.pprint()函数就特别有用。如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用pprint.pformat()。例:prettyCharacterCount.py

使用数据结构对真实世界建模
*井字棋:带有键'top-R'的字符串表示右上角,带有键'low-L'的字符串表示左下角,带有键'mid-M'的字符串表示中间,以此类推。ticTacToe.py
*嵌套的字典和列表:下面的程序使用字典包含其他字典,用于记录谁为野餐带来了什么食物。totalBrought()函数可以读取这个数据结构,计算所有客人带来的食物的总数。totalBrought.py

你可以用自己喜欢的任何方法,用程序中其他代码能够正确处理这个数据模型。在刚开始编程时,不需要太担心数据建模的“正确”方式。随着经验增加,你可能会得到更有效的模型,但重要的是,该数据模型符合程序的需要。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值