字典数据类型
字典的索引被称为“键”,键及其关联的值称为“键-值”对。
>>> 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()方法
如果该键不存在时:
- 返回备用值。
- 也不会产生错误。
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)