字典資料型別 字典常見操作

2021-07-04 19:08:36 字數 4431 閱讀 9742

#1.1從字典裡取值,不丟擲異常

d =

d1 =

print d.get('key','not found')

print d1.get(1,'not found')

print d1.get('seq',[2,3])

print d1.get(2,['a','b','c'])

#獲取字典的值同時刪除該項

print d1.pop('1',none)

print d1.pop(1,none) #如果是d1.pop(1)將丟擲keyerror異常

print d1

#1.2給字典新加乙個條目,若存在則不做操作,若沒有則賦值

d2 =

d2.setdefault('1',2) #不會改變字典d2['1']的值

d2.setdefault('4',4) #新增d2['4'] = 4

print d2 #

#1.3使用dict函式建立字典

#鍵是識別符號,不能是預設關鍵字、數字開頭的識別符號

data = dict(red=1,green=2,blue=3) #

#data = dict(for=4,12red=2) #錯誤的定義方式

print data

#通過序列列表建立字典

the_keys = ['a','b','c','d','e','f','g','h','i']

the_values = [1,2,3,4,5,6,7,8,9]

data1 = dict(zip(the_keys,the_values))

print

"zip=",zip(the_keys,the_values) #[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 7), ('h', 8), ('i', 9)]

print

"data1=",data1 #

#the_keys,the_values為大資料量,通過tertools模組來提高處理速度

import itertools

data2 = dict(itertools.izip(the_keys,the_values))

print data2

#dict呼叫基於位置的引數和關鍵引數,若關鍵引數值和位置引數衝突,則關鍵引數生效。

data3 = dict(,rof=41,fro=97,orf='00')

print data3 #

#建立字典,鍵對應的都是同乙個值

key_seq = [1,2,3,4,5,6,7,8,9,10]

print dict.fromkeys(key_seq,'hello') #

#1.4將列表元素交替作為鍵和值來建立字典

#方法1

defdictfromlist

(keysandvalues):

#keysandvlaues元素個數為單數,最後乙個鍵值將被捨棄;keysandvalues必須能夠切片

return dict(zip(keysandvalues[::2],keysandvalues[1::2]))

testlist1 = [1,2,3,4,5,6,7,8,9,10]

print dictfromlist(testlist1)

testlist2 = [1,'a',2,'b',3]

print dictfromlist(testlist2) #

#方法2

'''1、可擴充套件為對所有可迭代物件進行處理,方法1僅針對可切片的序列進行處理

2、yield關鍵字關於生成器的語法需單獨掌握

'''def

pairwise

(iterable):

itnext = iter(iterable).next

while

true:

yield itnext(),itnext() #yield為生成器,生成器的語法規則?

defdictfromseq

(seq):

return dict(pairwise(seq))

print dictfromseq('hello,world')

#1.5獲取字典的乙個子集

#1.5.1不改動原字典

defsub_dict

(somedict,somekeys,default=none):

return dict([(k,somedict.get(k,default)) for k in somekeys])

###########################################

#return dict([(k,somedict.get(k,default)) for k in somekeys if k in somedict])

###########################################

dict1 =

keyss = [1,2,3,4]

dictget = sub_dict(dict1,keyss)

for key in dictget.keys():

ifnot dictget[key]:

del dictget[key]

print dictget #

#1.5.2從原字典刪除那些符合條件的條目

defsub_dict_remove

(somedict,somekeys,default=none):

return dict([(k,somedict.pop(k,default)) for k in somekeys])

#1.6反轉字典

'''注意原始字典中多個鍵對應的值相等的情況

'''def

invert_dict

(d):

return dict([(v,k) for k,v in d.iteritems()])

dd =

print invert_dict(dd) #

#效能優化:

from itertools import izip

definvert_dict_1

(d):

return dict(izip(d.itervalues(),d.iterkeys()))

#test

print invert_dict_1()

#1.7字典的一鍵多值

#1.7.1通過設定的字典值為列表實現

dd1 = {}

key1 = 'aa'

print dd1.setdefault(key1,) #setdefault函式返回欄位的值

print dd1.setdefault('key3',['aa']).extend(['1','2','3'])

print dd1

#1.7.2通過設定字典的鍵值為字典實現

dd2 = {}

dd2.setdefault('key4',{})['value1'] = 'value1'

print dd2

#1.8使用字典分派方法和函式(case語句)

animals =

defdeal_with_a_cat

():print

"meow"

defdeal_with_a_dog

():print

"bark"

defdeal_with_a_bear

():print

"watch out for the *hug"

tokendict =

words = ['cat','dog','bear']

for word in words:

tokendict[word]()

print animals

#1.9字典鍵的交集與並集

a0 = dict.fromkeys(xrange(10))

b0 = dict.fromkeys(xrange(5,15))

a = dict.fromkeys(xrange(10),'1') #xrange(10) 0~9

b = dict.fromkeys(xrange(5,15),'2') #xrange(5,15) 5~14

#並集union = dict(a,**b0) #

print union

print dict(,a='1',b='2') #生成字典後,關鍵字引數會覆蓋原字典中定義的值

#交集if len(a) < len(b0):

inter = dict.fromkeys([x for x in a if x not

in b0])

else:

inter = dict.fromkeys([x for x in b0 if x not

in a])

print

'inter=',inter

資料型別 字典

字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 d print d 執行結果 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。乙個簡單的字典例...

資料型別 字典

list不好存資訊 所以用字典,key value的形式進行儲存 infos name 33 name7 3uu3 infos.get name 取值 get方法 info name 取值 方法 info.values 獲取所有的value info.keys 獲取所有的key info.items...

Python資料型別 字典

字典 字典是無序的,它不能通過偏移來訪問,只能通過鍵來訪問。字典 key 類似我們現實的鑰匙,而value則是鎖。乙個鑰匙開乙個鎖 特點 內部沒有順序,通過鍵來讀取內容,可巢狀,方便我們組織多種資料結構,並且可以原地修改裡面的內容,屬於可變型別。組成字典的鍵必須是不可變的資料型別,比如,數字,字串,...