美文网首页
字典和结构化数据

字典和结构化数据

作者: _大_兵_ | 来源:发表于2018-06-04 17:07 被阅读17次
    • keys()、values()、items()返回字典的键、值、键值对
    >>> spam = {'color':'red','age':42 }
    >>> for k in spam.keys():
                print(k)
    color
    age
    >>> for v in spam.values():
                print(v)
    red
    42
    >>> for k, v in spam.items():
              print('key: ' + k +' values: ' + str(v))
    key: color values: red
    key: age values: 42
    
    • 检查字典中是否存在键或值
    >>> 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
    

    'color' in spam 是一个简写版本,相当于'color' in spam.keys()

    • get()方法
      有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值。避免键不存在时产生KeyError报错。
    >>> picnic_items = {'apples':5,'cups':2}
    >>> 'I am bringing ' + str(picnic_items.get('cups',0) + ' cups'.)
    'I am bringing 2 cups.
    >>>  'I am bringing ' + str(picnic_items.get('eggs',0) + ' eggs'.)
    'I am bringing 0 eggs.
    
    • setdefault()方法
      有两个参数,第一个是要检查的键,第二个是如果键不存在时要设置的值。如果该键确实存在,方法就返回键的值。
    >>> spam = {'name':'pooka','age':5}
    >>> spam.setdefault('color','black')
    black
    >>> spam
    {'name':'pooka','age':5','color':'black'}
    >>> spam.setdefault('color','white')
    black
    
    • 计算一个字符串中每个字符出现的次数
    message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
    count = {}
    for character in message:
        count.setdefault(character,0)
        count[character] += 1
    
    print(count)
    
    import pprint
    pprint.pprint(count)
    
    print(pprint.pformat(count))
    

    漂亮打印,导入pprint模块,pprint()和pformat()函数

    • 一个小程序,按格式显示一个变化的游戏物品清单。
    import pprint
    #导入漂亮打印pprint模块
    inv = {'gold coin':42,'rope':1} # 原有物品清单
    dragonLoot = ['gold coin','dagger','gold coin','gold coin','ruby'] # 刷一个副本获取的战利品
    
    def addToInventory(inventory,addedItems): # 包含两个参数,原有清单(字典)和新增物品(列表)
        """将新获取的战利品增加到原物品清单中"""
        for i in addedItems:
            inventory.setdefault(i,0)
            inventory[i] += 1
        pprint.pprint(inventory) #漂亮打印
        return inventory #返回最终清单
    
    spam = addToInventory(inv,dragonLoot)
    print(spam)
    
    def displayInventory(inventory):
        """按照格式显示物品清单和物品总数"""
        print('Inventory:')
        item_total = 0
        for k,v in inventory.items():
            print(str(v) + ' ' + k)
            item_total += v
        
        print('Total number of items:' + str(item_total))
    
    displayInventory(spam)
    
    输出
    {'dagger': 1, 'gold coin': 45, 'rope': 1, 'ruby': 1}
    {'gold coin': 45, 'rope': 1, 'dagger': 1, 'ruby': 1}
    Inventory:
    45 gold coin
    1 rope
    1 dagger
    1 ruby
    Total number of items:48
    

    相关文章

      网友评论

          本文标题:字典和结构化数据

          本文链接:https://www.haomeiwen.com/subject/vflysftx.html