python學習筆記 Dictionary

2021-08-08 12:40:32 字數 4092 閱讀 1711

#建立字典

#直接建立,如

dicta=

for x in range(7):

dicta[chr(x+ord('a'))]=x

print(dicta) #

#dict.fromkeys(seq[, val]))

#建立乙個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值

tuplea=('h','i','l','a','r','y')

dicta=dict.fromkeys(tuplea,0)

print(dicta) #

#字典拷貝

dictb=dicta.copy() #注意與直接賦值(dictb=dicta)淺拷貝的區別

for x in dictb.keys():

dictb[x]=97

print(dicta,dictb) #

#dict.get(key, default=none) 返回key的值,若key不存在則返回default值

print(dictb.get('a'),dicta.get('m')) # 97 none

#dict.__contains__(key) 判斷key是否在字典中 在2.x中對應dict.has_key(key)

print(dicta.__contains__('a')) # true

#dict.items() 以列表返回可遍歷的(鍵, 值) 元組陣列

for x in dicta.items():

print(x,end=' ') # ('h', 0) ('i', 0) ('l', 0) ('a', 0) ('r', 0) ('y', 0)

print('\n')

#dict.keys() 以列表返回乙個字典所有的鍵

print(dicta.keys()) # dict_keys(['h', 'i', 'l', 'a', 'r', 'y'])

#dict.update(dict2) 以dict2的內容更新dict

dictc=

dicta.update(dictc)

print(dicta) #

#pop(key[,default]) 刪除key及其所對應的值,返回值為被刪除的值 若key不存在則返回default值

print(dicta.pop('address',none),dicta.pop('age',none)) # none 21

#清空字典元素

dictb.clear()

print(dictb) # {}

#刪除字典

del dictb

#一鍵多值字典

from collections import defaultdict

dic=defaultdict(list) # 保留所有值以及值的插入順序

print(dic) # defaultdict(, )

dic=defaultdict(set) # 消除重複元素

dic['key1'].add(222)

dic['key1'].add(333)

dic['key1'].add(222) # key1 加入重複值

dic['key2'].add(444)

print(dic) # defaultdict(, , 'key2': })

#有序字典(保留鍵的插入順序)

from collections import ordereddict

dic=ordereddict()

dic['key3']='i am key3'

dic['key2']='i am key2'

dic['key1']='i am key1'

print(dic) # ordereddict([('key3', 'i am key3'), ('key2', 'i am key2'), ('key1', 'i am key1')])

#對字典值的操作

dic={}

dic['zhangsan']=152

dic['lisi']=29

dic['wangwu']=33

dic['hilary']=173

#得到值最小的元組

print(min(zip(dic.values(),dic.keys()))) # (29, 'lisi')

#得到值最大的元組

print(max(zip(dic.values(),dic.keys()))) # (173, 'hilary')

#按值排序

sorteddic=sorted(zip(dic.values(),dic.keys()))

print(sorteddic) # [(29, 'lisi'), (33, 'wangwu'), (152, 'zhangsan'), (173, 'hilary')]

#找到兩個字典的交集

dic2=

print(dic.keys() & dic2.keys()) # 返回兩字典中 鍵的交集

print(dic.keys() - dic2.keys()) # 返回兩字典中 鍵的差

print(dic.items() & dic2.items()) # 返回兩字典中 元素的交集

使用字典統計序列中出現次數最多的元素

collections中的counter類是再好不過的選擇。counter在底層的實現中是乙個字典,在元素和它們的出現次數之間做了對映。**如下:

from collections import counter

import random

lista=

for i in range(20):

print(lista)

# ['c', 'b', 'c', 'b', 'a', 'b', 'a', 'c', 'c', 'c', 'b', 'b', 'b', 'c', 'a', 'c', 'c', 'c', 'b', 'c']

cntdict=counter(lista)

print(cntdict)

# counter()

返回出現次數最多的k個元素:

k=2

print(cntdict.most_common(k))

# [('c', 10), ('b', 7)]

對該字典的更新:

listb=['a','a','a','b','b','z']

cntdict.update(listb)

print(cntdict)

# counter()

根據某乙個鍵值對乙個字典序列進行排序操作,有如下兩種方式:

一是使用operator模組下的itemgetter類,例如

from operator import itemgetter

dicts=[,,

,,

]sorteddicts=sorted(dicts,key=itemgetter('age'))

print(sorteddicts)

# [,

# ,# ,

# ,# ]

二是使用lambda表示式,例如

sorteddicts2=sorted(dicts,key=lambda r:r['uid'])

print(sorteddicts2)

# [,

# ,# ,

# ,# ]

注意上面兩種操作同樣適用於min()和max()函式:

print(max(dicts,key=itemgetter('name')))

# print(min(dicts,key=lambda r:r['age']))

#

python教學筆記 python學習筆記(一)

1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...

python學習筆記

coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...

Python 學習筆記

python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...