標籤:python
欄位是Python是字典中唯一的鍵-值類型,是Python中非常重要的資料結構,因其用雜湊的方式儲存資料,其複雜度為O(1),速度非常快。下面列出字典的常用的用途.
【字典中常見方法列表】
#方法 #描述-------------------------------------------------------------------------------------------------D.clear() #移除D中的所有項D.copy() #返回D的副本D.fromkeys(seq[,val]) #返回從seq中獲得的鍵和被設定為val的值的字典。可做類方法調用D.get(key[,default]) #如果D[key]存在,將其返回;否則返回給定的預設值NoneD.has_key(key) #檢查D是否有給定鍵keyD.items() #返回表示D項的(鍵,值)對列表D.iteritems() #從D.items()返回的(鍵,值)對中返回一個可迭代的對象D.iterkeys() #從D的鍵中返回一個可迭代對象D.itervalues() #從D的值中返回一個可迭代對象D.keys() #返回D鍵的列表D.pop(key[,d]) #移除並且返回對應給定鍵key或給定的預設值D的值D.popitem() #從D中移除任意一項,並將其作為(鍵,值)對返回D.setdefault(key[,default]) #如果D[key]存在則將其返回;否則返回預設值NoneD.update(other) #將other中的每一項加入到D中。D.values() #返回D中值的列表
【
建立字典的五種方法】
方法一: 常規方法 # 如果事先能拼出整個字典,則此方法比較方便
>>> D1 = {'name':'Bob','age':40}
方法二: 動態建立 # 如果需要動態地建立字典的一個欄位,則此方法比較方便
>>> D2 = {}>>> D2['name'] = 'Bob'>>> D2['age'] = 40>>> D2{'age': 40, 'name': 'Bob'}
方法三:
dict--關鍵字形式 # 代碼比較少,但鍵必須為字串型。常用於函數賦值
>>> D3 = dict(name='Bob',age=45)>>> D3{'age': 45, 'name': 'Bob'}
方法四:
dict--鍵值序列# 如果需要將鍵值逐步建成序列,則此方式比較有用,常與zip函數一起使用
>>> D4 = dict([('name','Bob'),('age',40)])>>> D4{'age': 40, 'name': 'Bob'}
或
>>> D = dict(zip(('name','bob'),('age',40)))>>> D{'bob': 40, 'name': 'age'}
方法五:
dict--fromkeys方法# 如果鍵的值都相同的話,用這種方式比較好,並可以用fromkeys來初始化
>>> D5 = dict.fromkeys(['A','B'],0)>>> D5{'A': 0, 'B': 0}
如果鍵的值沒提供的話,預設為None
>>> D3 = dict.fromkeys(['A','B'])>>> D3{'A': None, 'B': None}
【
字典中鍵值遍曆方法】
>>> D = {'x':1, 'y':2, 'z':3} # 方法一>>> for key in D:print key, '=>', D[key]y => 2x => 1z => 3>>> for key, value in D.items(): # 方法二print key, '=>', valuey => 2x => 1z => 3>>> for key in D.iterkeys(): # 方法三print key, '=>', D[key]y => 2x => 1z => 3>>> for value in D.values(): # 方法四print value213>>> for key, value in D.iteritems(): # 方法五print key, '=>', valuey => 2x => 1z => 3
Note:用D.iteritems(), D.iterkeys()的方法要比沒有iter的快的多。
【
字典的常用用途之一代替switch】
在C/C++/Java語言中,有個很方便的函數switch,比如:
public class test {public static void main(String[] args) {String s = "C";switch (s){case "A": System.out.println("A");break;case "B":System.out.println("B");break;case "C":System.out.println("C");break;default:System.out.println("D");}}}
在Python中要實現同樣的功能,
方法一,就是用if, else語句來實現,比如:
from __future__ import divisiondef add(x, y): return x + ydef sub(x, y): return x - ydef mul(x, y): return x * ydef div(x, y): return x / ydef operator(x, y, sep='+'): if sep == '+': print add(x, y) elif sep == '-': print sub(x, y) elif sep == '*': print mul(x, y) elif sep == '/': print div(x, y) else: print 'Something Wrong'print __name__ if __name__ == '__main__': x = int(raw_input("Enter the 1st number: ")) y = int(raw_input("Enter the 2nd number: ")) s = raw_input("Enter operation here(+ - * /): ") operator(x, y, s)
方法二,用字典來巧妙實現同樣的switch的功能,比如:
#coding=gbkfrom __future__ import divisionx = int(raw_input("Enter the 1st number: "))y = int(raw_input("Enter the 2nd number: "))def operator(o): dict_oper = { '+': lambda x, y: x + y, '-': lambda x, y: x - y, '*': lambda x, y: x * y, '/': lambda x, y: x / y} return dict_oper.get(o)(x, y) if __name__ == '__main__': o = raw_input("Enter operation here(+ - * /): ") print operator(o)
Python中的字典