第九章 python 字典(Dict)

第九章 python 字典(Dict)

9-1 字典基本操作

  • 列表与元组是依序排列可称是序列数据结构,只要知道元素的特定位置,即可使用索引观念取得元素内容,这一章的重点是介绍了字典,它并不是依序排列的数据结构,通常可称是非序列数据结构,所以无法使用类似列表的数值(0、1、… n )索引观念取得元素内容。
9-1-1 字义字典
  • 字典也是一个列表型的数据结构,但是它的元素是用 “ 键 - 值 ” 方式配对存储存,在操作时是用键取得值的内容。定义字典时,是将 “ 键 - 值 ” 放大 “ { } ” 内,字典的语法格式如下:

    • name_dict = { 键1:值1,…,键n:值n } # name_dict 是字典变量名称
  • 字典的值可以是任何 python 的对象,所以可以是数值、字符串、列表等。

  • 例:以水果行和面店为例定义一个字典,同时列出字典。下列字典是设定水果一斤的价格、面一碗的价格,最后使用 type() 列出字典数据类型。

    fruits = {
         '西瓜':15,'香蕉':20,'水蜜桃':25}
    noodles = {
         '牛肉面':100,'肉丝面':80,'阳春面':60}
    print(fruits)
    print(noodles)
    print("字典 fruits 的数据类型是",type(fruits))
    
    #输出结果
    {
         '西瓜': 15, '香蕉': 20, '水蜜桃': 25}
    {
         '牛肉面': 100, '肉丝面': 80, '阳春面': 60}
    字典 fruits 的数据类型是 <class 'dict'>
    
  • 例:在使用 python 设计打斗游戏时,玩家通常扮演英雄的角色,敌军可以用字典方式储存,例如,可以用不同颜色的标记设定敌军的小兵,每一个敌军的小兵予一个分数,这样可以由打死敌军数量再统计游戏得分,可以用下列方式定义字典内容。

  • 例:定义 soldier0 字典 tag 和 score 是键,red 和 3 是值。

    soldier0 = {'tag':'red','score':3}
    print(soldier0)
    
    #输出结果
    {'tag': 'red', 'score': 3}
    
9-1-2 列出字典元素的值
  • 字典的元素是 “ 键 - 值 ” 配对设定,如果想要取得元素的值,可以将键当作是索引方式处理,因此字典内的元素不可有重复的键,可参考下列实例第 4 行,例如,下列可传回 fruits 字典水蜜桃的值

    • fruits [ ’ 水蜜桃 ’ ]
  • 例:分别列出水果店水蜜栎一斤的价格和面店年肉面一碗的价格。

    fruits = {
         '西瓜':15,'香蕉':20,'水蜜桃':25}
    noodles = {
         '牛肉面':100,'肉丝面':80,'阳春面':60}
    print("水蜜桃一斤:",fruits["水蜜桃"],"元")
    print("牛肉面一碗:",noodles["牛肉面"],"元")
    
    #输出结果
    水蜜桃一斤: 25 元
    牛肉面一碗: 100
  • 例:分别列出小兵字典的 tag 和 score 键的值。

    soldier0 = {'tag':'red','score':3}
    print("tag 键的值:",soldier0['tag'])
    print("score 键的值:",soldier0["score"])
    
    #输出结果
    tag 键的值: red
    score 键的值: 3
    
9-1-3 增加字典元素
  • 可使用下列语法格式增加字典元素。

    • name_dict [ 键 ] = 值
  • 例:为 fruits 字典增加橘子一斤 18 元

    fruits = {
         '西瓜':15,'香蕉':20,'水蜜桃':25}
    fruits['橘子'] = 18
    print(fruits)
    print('橘子一斤:',fruits['橘子'],"元")
    
    #输出结果
    {
         '西瓜': 15, '香蕉': 20, '水蜜桃': 25, '橘子': 18}
    橘子一斤: 18
  • 在设计打斗游戏时,我们可以使用屏幕坐标标记小兵的位置,下列实例是用 xpos/ypos 标记小兵的 x 坐标,y 坐标

    soldier0 = {
         'tag':'red','score':3}
    soldier0['xpos'] = 100
    soldier0['ypos'] = 30
    soldier0['speed'] = 'slow'
    print("小兵的 x 坐标:",soldier0['xpos'])
    print("小兵的 y 坐标:",soldier0['ypos'])
    print("小兵的移动速度:",soldier0['speed'])
    
    #输出结果
    小兵的 x 坐标: 100
    小兵的 y 坐标: 30
    小兵的移动速度: slow
    
9-1-4 更改字典元素内容
  • 市面上的水果价格是浮动的,如果发生价格异动可以使用本节观念更改

  • 例:将 fruits 字典的香蕉一斤改成 12 元

    fruits = {
         '西瓜':15,'香蕉':20,'水蜜桃':25}
    print("旧香蕉的价格一斤:",fruits['香蕉'],'元')
    fruits['香蕉'] = 12
    print("香蕉的价格一斤:",fruits['香蕉'],'元')
    
    #输出结果
    旧香蕉的价格一斤: 20 元
    香蕉的价格一斤: 12
  • 在设计打斗游戏时,我们需要时刻移动小兵的位置,此时可以使用本节的方法来更改小兵位置

    soldier0 = {
         'tag':'red','score':3,'xpos':100,'ypos':30,'speed':'slow'}
    print("小兵旧的 x,y 坐标:",soldier0['xpos'],soldier0['ypos'])
    if soldier0['speed'] == 'slow':         #慢
        x_move = 1
    elif soldier0['speed'] == 'medium':     #中
        x_move = 3
    else:
        x_move = 5                           #快
    soldier0['xpos'] += x_move
    print("小兵新的 x,y 坐标:",soldier0['xpos'],soldier0['ypos'])
    
    #输出结果
    小兵旧的 x,y 坐标: 100 30
    小兵新的 x,y 坐标: 101 30
    
9-1-5 删除字典特定元素
  • 如果想要删除字典特定元素,它的语法格式如下:

    • del name_dict[ 键 ]
  • 例:删除 fruits 字典的西瓜元素

    fruits = {'西瓜':15,'香蕉':20,'水蜜桃':25}
    print("旧的 fruits 内容:",fruits)
    del fruits['西瓜']
    print("新的 fruits 内容:",fruits)
    
    #输出结果
    旧的 fruits 内容: {'西瓜': 15, '香蕉': 20, '水蜜桃': 25}
    新的 fruits 内容: {'香蕉': 20, '水蜜桃': 25}
    
9-1-6 删除字典所有元素
  • python 有提供方法 clear() 可以将字典的所有元素删除,此时字典仍然存在,不过将变成空的字典

  • 例:使用 clear() 方法删除 fruits 字典的所有元素

    fruits = {
         '西瓜':15,'香蕉':20,'水蜜桃':25}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值