#建立字典
#直接建立,如
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 ...