字典是python中唯一的映射類型,采用鍵值對(key-value)的形式存儲數據。python對key進行哈希函數運算,根據計算的結果決定value的存儲地址,所以字典是無序存儲的,且key必須是可哈希的。可哈希表示key必須是不可變類型,如:數字、字符串、元組。
字典(dictionary)是除列表意外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
1,字典無序。2,數據關聯性強,3鍵值對。唯一一個映射的數據類型。
dic = {'name':'jinxin','age':20} dic1 = {'py8期':['曉梅','方勝君',],'py6期':['zhangsan','lisi','wangwu']} print(dic['name']) print(dic1['py8期']) for i in dic: print(i) 輸出: jinxin ['曉梅', '方勝君'] name age
字典的鍵必須是可哈希的(不可變的數據類型:字符串,數字,布爾值,元祖)並且是唯一的
不可哈希的(可變的數據類型:列表,字典,set)
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} print(dic) 輸出: {'name': 'alex', 'age': 56, 'hobby ': 'oldwomem'}
#增:
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} dic['weight'] = 75 print(dic) 輸出: {'name': 'alex', 'age': 56, 'hobby ': 'oldwomem', 'weight': 75}
# setdefault 在字典中添加鍵值對,如果只有鍵那對應的值是none,但是如果原字典中存在設置的鍵值對,則他不會更改或者覆蓋。
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} dic.setdefault('k') dic.setdefault('name','v') print(dic) 輸出: {'name': 'alex', 'age': 56, 'hobby ': 'oldwomem', 'k': None}
刪:
pop
pop根據key刪除鍵值對,並返回對應的值,如果沒有key則返回默認返回值
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} dic.pop('name') print(dic) dic = {'name':'alex','age':56,'hobby ':'oldwomem'} print(dic.pop('name')) print(dic) 輸出: {'age': 56, 'hobby ': 'oldwomem'} alex {'age': 56, 'hobby ': 'oldwomem'}
popitem:
隨機刪除字典中的某個鍵值對,將刪除的鍵值對以元祖的形式返回
dic_pop1 = dic.popitem() # 隨機刪除字典中的某個鍵值對,將刪除的鍵值對以元祖的形式返回 print(dic_pop1) # ('name','jin')
clear: 清空字典
dic_clear = dic.clear() # 清空字典 print(dic,dic_clear) # {} None
del:刪除
# del dic["name"] # 沒有返回值。 # print(dic)
改:
dic[key] = new_value
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} dic['name'] = '日天' print(dic) 輸出: {'name': '日天', 'age': 56, 'hobby ': 'oldwomem'}
# dic = {"name":"jin","age":18,"sex":"male"} # dic2 = {"name":"alex","weight":75} # dic2.update(dic) # 將dic所有的鍵值對覆蓋添加(相同的覆蓋,沒有的添加)到dic2中 # print(dic2)
輸出:
{'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
查:
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} print(dic['name']) # print(dic['gfgfgfdgf']) # 報錯 print(dic.get('name')) print(dic.get('gfdgfgf')) # None print(dic.get('gfdgfgf','sb,沒有這個鍵')) print(dic.keys(),type(dic.keys())) 輸出: alex alex None sb,沒有這個鍵 dict_keys(['name', 'age', 'hobby ']) <class 'dict_keys'>
其他操作:
dic = {'name':'alex','age':56,'hobby ':'oldwomem'} item = dic.items() print(item,type(item)) #dict_items([('name', 'alex'), ('age', 56), ('hobby ', 'oldwomem')]) <class 'dict_items'> # 這個類型就是dict_items類型,可迭代的 keys = dic.keys() print(keys,type(keys)) # dict_keys(['name', 'age', 'hobby ']) <class 'dict_keys'> values = dic.values() print(values,type(values)) # dict_values(['alex', 56, 'oldwomem']) <class 'dict_values'>
循環:
dic = {"name":"jin","age":18,"sex":"male"} for key in dic: print(key) for item in dic.items(): print(item) for key,value in dic.items(): print(key,value) 輸出: name age sex ('name', 'jin') ('age', 18) ('sex', 'male') name jin age 18 sex male
dic = {"name":"jin","age":18,"sex":"male"} for key in dic.keys(): print(key) for i in dic: print(i) 輸出: name age sex name age sex
dic = {"name":"jin","age":18,"sex":"male"} print(dic.values()) for value in dic.values(): print(value) 輸出: dict_values(['jin', 18, 'male']) jin 18 male
a,b = [1,2] print(a,b) 輸出: 1 2