python字典和結構化資料
字典的索引可以使用許多不同型別的資料,不只是整數。字典的索引被稱為“鍵”,鍵及其關聯的值稱為“鍵—值”對,在程式碼中,字典輸入時帶花括號{}。
字典中的表項是不排序的,所以字典不能像列表那樣切片。
5.1.1 keys()、values()和items()方法
key()、values()和items()方法將返回類似於列表的值,分別對應於字典的鍵、值和鍵-值對。這些方法返回的值不是真正的列表,他們不能被修改,沒有append()方法。但這些資料型別可以用於for迴圈。
>>> spam = {'color':'red','age':42}>>> for i in spam.values(): print (i) red42
可以透過list()方法將字典轉換為列表
>>> list(spam.keys()) ['color', 'age']>>> list(spam.values()) ['red', 42]>>> spam {'color': 'red', 'age': 42}
5.1.2 get()方法setdefault()方法
get()方法有兩個引數:要取得其值的鍵,以及如果該鍵不存在時,返回的備用值
setdefault()方法提供了一種方式,傳遞給該方法的第一個引數,是要檢查的鍵,第二個引數,是如果該鍵不存在時要設定的值。如果該鍵存在就返回鍵值。
如果程式中匯入了pprint()模組,就可以使用pprint()和pformat()列印字典。
import pprint 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] = count[character] + 1print(pprint.pformat(count))#pprint.pprint(count) print(pprint.pformat(count))這兩種表示式等價
執行結果:
{' ': 13, ',': 1, '.': 1, 'A': 1, 'I': 1, 'a': 4, 'b': 1, 'c': 3, 'd': 3, 'e': 5, 'g': 2, 'h': 3, 'i': 6, 'k': 2, 'l': 3, 'n': 4, 'o': 2, 'p': 1, 'r': 5, 's': 3, 't': 6, 'w': 2, 'y': 1}
- 好玩遊戲的物品清單
你在建立一個好玩的影片遊戲。用於對玩家物品清單建模的資料結構是一個字典。其中鍵是字串,描述清單中的物品,值是一個整型值,說明玩家有多少該物品。例如,字典值{'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1,'arrow': 12}意味著玩家有 1 條繩索、6 個火把、42 枚金幣等。 寫一個名為displayInventory()的函式,它接受任何可能的物品清單,並顯示如下:
Inventory:1 rop6 torch42 gold coin1 dagger12 arrowTotal number of items : 62
程式碼如下:
def displayInventory(dic): print('Inventory:') count = 0 for k, v in dic.items(): print(str(v) + ' ' + k) count = v+count print('Total number of items : ', count) dicValue = {'rop': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12} displayInventory(dicValue)
- 假設征服一條龍的戰利品表示為這樣的字串列表:
dragonLoot = ['gold coin', 'digger', 'gold coin', 'gold coin', 'ruby']
寫一個名為 addToInventory(inventory, addedItems)的函式,其中 inventory 引數 是一個字典,表示玩家的物品清單(像前面專案一樣),addedItems 引數是一個列表, 就像 dragonLoot。 addToInventory()函式應該返回一個字典,表示更新過的物品清單。
def displayInventory(dic): print('Inventory:') count = 0 for k, v in dic.items(): print(str(v) + ' ' + k) count = v+count print('Total number of items : ', count)def addToInventory(inventory, addeditems): for i in addeditems: if i in inventory.keys(): inventory[i] += 1 else: inventory.setdefault(i, 1) return inventory inv = {'gold coin':42, 'rope':1} dragonLoot = ['gold coin', 'digger', 'gold coin', 'gold coin', 'ruby'] inv = addToInventory(inv,dragonLoot) displayInventory(inv)
前面的程式(加上前一個專案中的 displayInventory()函式)將輸出如下:
Inventory:45 gold coin1 rope1 digger1 rubyTotal number of items : 48
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2649481/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python資料結構:字典Python資料結構
- 內建資料結構集合和字典資料結構
- 結構化資料、半結構化資料和非結構化資料
- 資料結構-字典樹資料結構
- js資料結構--字典(map)JS資料結構
- Redis資料結構—連結串列與字典的結構Redis資料結構
- Redis資料結構—連結串列與字典Redis資料結構
- JavaScript資料結構——字典和雜湊表的實現JavaScript資料結構
- 【Python_029】內建資料結構,列表 | 字典 | 集合 | 元組Python資料結構
- 2.1.3 CDB中的資料字典結構
- 從零學Python:第十五課-常用資料結構之字典Python資料結構
- Python資料結構Python資料結構
- 資料結構之樹( 線段樹,字典樹)資料結構
- Python的資料結構(四)bytes和bytearrayPython資料結構
- Python基礎之os和資料結構Python資料結構
- 04 Javascript資料結構與演算法 之 字典和雜湊表JavaScript資料結構演算法
- 結構化資料與非結構化資料的差異
- 資料結構----字典及部分知識總結(2018/10/18)資料結構
- python資料結構setPython資料結構
- (python)資料結構—集合Python資料結構
- (python)資料結構—字串Python資料結構字串
- (python)資料結構——列表Python資料結構
- 資料結構(python版)資料結構Python
- Python基本資料結構Python資料結構
- python演算法與資料結構-演算法和資料結構介紹(31)Python演算法資料結構
- Python掙錢系列:資料整合之-結構化企業資料Python
- Python3結構化資料庫操作包pymysqlPython資料庫MySql
- 資料流圖 和 資料字典
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- 12C_CDB中的資料字典體系結構
- Redis資料結構詳解(2)-redis中的字典dictRedis資料結構
- python資料結構之棧Python資料結構
- Python常用資料結構(列表)Python資料結構
- 資料結構與演算法Python版 熟悉雜湊表,瞭解Python字典底層實現資料結構演算法Python
- Redis 的基礎資料結構(一) 可變字串、連結串列、字典Redis資料結構字串
- python演算法與資料結構-什麼是資料結構Python演算法資料結構
- 可持久化資料結構持久化資料結構
- Qlik:非結構化資料和GenAI洞察報告AI