Python编程快速上手第五章字典和结构化数据

字典数据类型
字典的索引被称为“键”,键及其关联的值称为“键-值”对。

>>> myCat = {'size': 'fat', 'color': 'gray', 'disposition': 'loud'}

字典仍然可以用整数值作为键,就像列表使用整数值作为下标一样,但它们不
必从 0 开始,可以是任何数字。

>>> spam = {12345: 'Luggage Combination', 42: 'The Answer'}

字典与列表
字典中的表项是不排序的。

>>> 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 出错信息。
keys()、values()和 items()方法
分别对应于字典的键、值和键-值对:keys()、values()和 items()。
但这些数据类型(分别是dict_keys、dict_values 和dict_items)可以用于for 循环。
检查字典中是否存在键或值
in 和 not in 操作符可以检查值是否存在于列表中。
也可以利用这些操作符,检查某个键或值是否存在于字典中。

>>> spam = {'name': 'Zophie', 'age': 7}
>>> 'name' in spam.keys()
True
>>> 'Zophie' in spam.values()
True

get()方法
如果该键不存在时:

  1. 返回备用值。
  2. 也不会产生错误。
picnicItems = {'apples': 5, 'cups': 2}
picnicItems.get('cups', 0)
2
picnicItems.get('eggs', 0)
0

setdefault()方法
当键不存在dict时,增加一个键值对。

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

漂亮打印 pprint 模块
如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用
pprint.pformat()。下面两行代码是等价的:

pprint.pprint(someDictionaryValue)
#pformat为格式化输出,不打印到屏幕,
print(pprint.pformat(someDictionaryValue))

项目1:
好玩游戏的物品清单
字典值{‘rope’: 1, ‘torch’: 6, ‘gold coin’: 42, ‘dagger’: 1, ‘arrow’: 12},要求显示如下:

Inventory:
12 arrow
42 gold coin
1 rope
6 torch
1 dagger
Total number of items: 62

项目2:
把前面的项目增加一个清单
dragonLoot = [‘gold coin’, ‘dagger’, ‘gold coin’, ‘gold coin’, ‘ruby’]

gameTool = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12}
def dispaly(tool):
    total = 0
    print("Inventory:")
    for k,v in tool.items():
        print(str(v)+' '+k)
        total += v
    print("total: %s"%(total))
dispaly(gameTool)
dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby']
def addTool(inv,addItem):
    for temp in addItem:
        inv.setdefault(temp,0)
        inv[temp] += 1
addTool(gameTool,dragonLoot)
dispaly(gameTool)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值