字典和机构化数据
字典
一、字典数据类型
想列表一样,“字典”是许多值的集合。但不想列表的下标,字典的索引可以使用许多不同类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对
我们创建一个学生成绩字典,以姓名为键,成绩为值
dict1 = {'张三': 77, '李四': 90, '王麻子': 100}
我们要查找李四成绩,该怎么实现?运行下面代码。
print(dict1['李四'])
1、keys()、values()和items()方法
① 查看键
dict1 = {'张三': 77, '李四': 90, '王麻子': 100}
for k in dict1.keys():
print(k)
②查看值
dict1 = {'张三': 77, '李四': 90, '王麻子': 100}
for v in dict1.values():
print(v)
③查看键-值对(返回的是元组)
dict1 = {'张三': 77, '李四': 90, '王麻子': 100}
for i in dict1.items():
print(i)
2、检查字典是否存在键或值
>>> spam = {'name': 'Zophie', 'age': 7}
>>> 'name' in spam.keys()
True
>>> 'Zophie' in spam.values()
True
>>> 'color' in spam.keys()
False
>>> 'color' not in spam.keys()
True
>>> 'color' in spam
False
3、get()方法
有两个参数:要取得其值的键,以及如果键不存在时,返回的备用值
>>> picnicItems = {'apples': 5, 'cups': 2}
>>> 'I am bringing ' + str(picnicItems.get('cups', 0)) + ' cups.'
'I am bringing 2 cups.'
>>> 'I am bringing ' + str(picnicItems.get('eggs', 0)) + ' eggs.'
'I am bringing 0 eggs.'
4、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'}
二、井字棋
井字棋盘看起来像一个大的井字符号(#),有 9 个空格,可以包含 X、O 或空。
要用字典表示棋盘,可以为每个空格分配一个字符串键

theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
用以上代码表示下图

theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
'mid-L': ' ', 'mid-M': 'X', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': ' '}

theBoard = {'top-L': 'O', 'top-M': 'O', 'top-R': 'O',
'mid-L': 'X', 'mid-M': 'X', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': 'X'}
玩家O获胜

让我们用程序创建一个井字棋
theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
def printBoard(board):
print(board['top-L'] + '| ' + board['top-M'] + '|' + board['top-R'])
print('—————————')
print(board['mid-L'] + '| ' + board['mid-M'] + '|' + board['mid-R'])
print('—————————')
print(board['low-L'] + '| ' + board['low-M'] + '|' + board['low-R'])
printBoard(theBoard)

最终游戏的实现
theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
'low-L': ' ', 'low-M': ' ', 'low-R': ' '}
def printBoard(theboard):
print(theboard['top-L'] + '|' + theboard['top-M'] + '|' + theboard['top-R'])
print('————————')
print(theboard['mid-L'] + '|' + theboard['mid-M'] + '|' + theboard['mid-R'])
print('————————')
print(theboard['low-L'] + '|' + theboard['low-M'] + '|' + theboard['low-R'])
turn = 'X'
for i in range(9):
printBoard(theBoard)
print('玩家 ' + turn + '开始下棋')
move = input('请您输入键')
theBoard[move] = turn
if turn == 'X':
turn = 'O'
else:
turn = 'X'
printBoard(theBoard)
到这里入门知识就结束了!
上一节 返回目录

浙公网安备 33010602011771号