1. 程式人生 > >Python基礎知識:字典dict

Python基礎知識:字典dict

排列 訪問 keyerror pda 拼接 bsp 目的 鍵值 next()

註意:

  # 字典是可變類型
  # 字典中的數據是無序的
  # 一個字典條目的語法是 鍵:值
  # 任何不可變數據類型都可以作為條目的鍵

知識點一:創建

鍵:必須獨一無二(如果鍵重復存入,會被覆蓋),只能是不可變類型(常用字符串和數字)
值:可以是任意數據類型

知識點二:訪問數據項

通過key------dic[key]
  如果key不存在,報KeyError 沒有索引!不能分片!

知識點三:更新數據項

dic[key] = value 如果key不存在,就是新增數據項

知識點四:刪除數據項

del dic[key] 刪除鍵是‘key‘的條目
del dict 刪除詞典

知識點五:字典方法

判斷key存在
  *has_key(key)
  *in 、not in

*dict.keys() 返回一個包含字典所有KEY的列表

*dict.values() 返回一個包含字典所有value的列表

*dict.items() 返回一個包含所有(鍵,值)元祖的列表

dic.pop(key) 刪除鍵key的項並返回key對應的 value值,如果key不存在,報錯

dict.clear() 刪除字典中的所有項或元素

dict.copy() 返回一個字典淺拷貝的副本

*dict.fromkeys(seq, val=None) 創建並返回一個新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對應的初始值(默認為None)

***dict.get(key, default=None) 返回字典中key對應的值,若key不存在字典中,則返回default的值(default默認為None)

*adict.update(bdict) 將字典bdict的鍵值對添加到字典adict中
  key存在,就更新value。key不存在就新增數據項。

  字典合並 update

技術分享圖片知識點六:運算

字典不支持拼接和重復操作符(+,*)
字典的比較操作 :長度等、鍵等、值等

知識點七:叠代

遍歷字典的key
  for key in adict.keys():print key

遍歷字典的value
  for value in adict.values(): print value

遍歷字典的項
  for item in adict.items():print item

技術分享圖片

遍歷字典的key-value
  for key, value in adict.items(): print ‘key=%s, value=%s‘ %(key, value)

*叠代器
  iter()函數可以將可叠代對象,變成叠代器
  叠代器有next()方法返回下一項,當沒有值時,拋出StopIteration錯誤
  dict.iteritems()、dict.iterkeys()、dict.itervalues()
  與它們對應的非叠代方法一樣,不同的是它們返回一個叠代子,而不是一個列表;

知識點八:排序

sorted(dic,value,reverse)

dic為可以叠代的對象,value 為排序的對象(這裏指鍵或鍵值)
reverse:註明升序還是降序,True--降序,False--升序(默認)
鍵排序
--sorted(dict.keys())
--sorted(dict.items(), key=lambda item:item[0])
值排序
--sorted(dict.values())
--sorted(dict.items(), key=lambda item:item[1])

*collections:OrderedDict
OrderedDict的Key會按照插入的順序排列,不是Key本身排序

知識點九:類型轉換

其他類型轉字典:
  字符串:eval(str)
  列表:
      二維列表轉換
          手動構造
          利用zip

  字典轉列表:
      list(dic) == dict.keys()
      dict.keys() dict.values()
  字典轉元組:
      tuple(dic) -- 只包含key值
字典轉字符串:
      str(dic)

練習一:把字符串”k1:1|k2:2|k3:3”處理成 python 字典的形式:{‘k3‘: 3, ‘k2‘: 2, ‘k1‘: 1

string = "k1:1|k2:2|k3:3"
dic={}
print string.split("|")
for kv in string.split("|"):
k,v =kv.split(":")
if v.isdigit():
v=int(v)
dic[k]=v
print dic

練習二:

技術分享圖片

Python基礎知識:字典dict