字典和机构化数据

字典


 

一、字典数据类型

  想列表一样,“字典”是许多值的集合。但不想列表的下标,字典的索引可以使用许多不同类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对

  我们创建一个学生成绩字典,以姓名为键,成绩为值

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)

到这里入门知识就结束了!

上一节         返回目录

 

posted @ 2021-01-10 14:27  贫僧敲代码  阅读(89)  评论(0)    收藏  举报