字典dict

字典dict是Python里面唯一的映射数据类型,它采用key—value对应的数据存储方式。字典的key必须是不可变数据类型,如字符串,数字,元组,字典的value可以是任意数据类型。字典的键Key必须是唯一的,不可重复。Python3.5之前的Python版本字典都是无序的,之后的版本字典都是有序的。

可变数据类型:数字,字符串,布尔值,元组

可变数据类型:列表,字典,集合(set)

字典的基本操作

#字典的增
#1.直接增加,保证key不重复的情况下
dic={1:'a',2:'b',3:'c',4:'d'}
dic[5]='e'
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

#2.用setdefault函数增加,key已存在时字典不变,key不存在时才添加
dic={1:'a',2:'b',3:'c',4:'d'}
dic.setdefault(5,'e')
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}
dic={1:'a',2:'b',3:'c',4:'d'}
dic.setdefault(1,'e')
print(dic)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
#字典的删
#1.pop函数删除,有返回值,返回删除的value。如果字典中没有要删除的键key,可设置其他返回值
dic={1:'a',2:'b',3:'c',4:'d'}
ret = dic.pop(1)
print(dic,ret)
#输出结果:{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
                 a
ret = dic.pop(5,'返回值')
print(ret)
#输出结果:返回值

#2.clear清空字典
dic={1:'a',2:'b',3:'c',4:'d'}
dic.clear()
print(dic)
#输出结果:{}

#3.del删除字典和删除键值对
dic={1:'a',2:'b',3:'c',4:'d'}
del dic[1]
print(dic)
del dic
print(dic)
#输出结果:{2: 'b', 3: 'c', 4: 'd'}
                报错:NameError: name 'dic' is not defined

#4.popiteam   Python3.5之前是随机删除,因为字典是无序的,之后都是默认删除最后一个键值对。
dic={1:'a',2:'b',3:'c',4:'d'}
ret = dic.popitem()
print(ret)
print(dic)
#输出结果:(4, 'd')
                {1: 'a', 2: 'b', 3: 'c'}
#字典的改
#1.按照key直接改,如果Key字典里就修改对应value,不在就添加
dic={1:'a',2:'b',3:'c',4:'d'}
dic[1]='e'
print(dic)
#输出结果:{1: 'e', 2: 'b', 3: 'c', 4: 'd'}

#1.Update改,将dic的键值对,覆盖,添加到dic2 中,dic不变
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)
print(dic)
print(dic2)
#输出结果:{'name': 'jin', 'age': 18, 'sex': 'male'}
                {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}
#字典的查
#1.直接通过键key查
dic={1:'a',2:'b',3:'c',4:'d'}
print(dic[1])
#print(dic[5])      没有key则报错
#输出结果:a

#2.get函数查,没有对应key时默认返回None,可设置返回值
dic={1:'a',2:'b',3:'c',4:'d'}
print(dic.get(3))
print(dic.get(5))
print(dic.get(6,'没有此键值对'))
#输出结果:c
                None
                没有此键值对

字典的嵌套和列表类似

dic = {
    'name':'金鑫',
    'name_list':[1,2,3,'李杰'],
    1:{
        'python10':['小黑','萌哥'],
       '老男孩':{'name':'oldboy','age':56}
    }
}

#1   [1,2,3,'李杰']追加'wusir'
dic['name_list'].append('wusir')
print(dic)
# 2   ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
dic[1]['python10'].insert(1,'花哥')
print(dic)
# 3  ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
dic[1]['老男孩']['hobby']=('男人')
print(dic)

Ps:

a = 1 b = 3         一行代码,让a,b值互换
a,b=b.a
print(a,b)          结果:a=3,b=1
a,b=['1','2']       a='1'   b='2'   a和b是字符串类型

a,b=('1','2')       a='1'   b='2'   a和b是字符串类型

字典的函数操作

和list列表类似,字典有count,len

把全部的key取出来用 keys,取出来后是类似 list 的表,但不是 list,通过转变可以变成 list列表

dic={1:'a',2:'b',3:'c',4:'d'}
keys = dic.keys()
print(keys,type(keys))
k=list(keys)
print(k,type(k))
输出:dict_keys([1, 2, 3, 4]) <class 'dict_keys'>
         [1, 2, 3, 4] <class 'list'>

把全部的值value取出来也类似,用values,不是列表但可以转变成列表

dic={1:'a',2:'b',3:'c',4:'d'}
values = dic.values()
print(values,type(values))
v=list(values)
print(v,type(v))
结果:dict_values(['a', 'b', 'c', 'd']) <class 'dict_values'>
        ['a', 'b', 'c', 'd'] <class 'list'>

把键值对取出来用 items,与上面类似

dic={1:'a',2:'b',3:'c',4:'d'}
items = dic.items()
print(items)
结果:dict_items([(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')])

把键值对取出来,简单的 for 循环

for k,v in dic.items():
print(k,v)for k in dic:
print(k,dic[k])