python之路(字典)
字典:dic:python基础数据之一,建过键值对{key:value}存储数据.
dic = {'name': 'eric', 'age': 18, 'sex': '男', 'job': 'IT'}
一、增:
第一种:有key就直接修改,无key就直接添加
dic['wife'] = 'abby'
result:{'name': 'eric', 'age': 18, 'sex': '男', 'job': 'IT', 'wife': 'abby'}
dic['age'] = 32
result:{'name': 'eric', 'age': 32, 'sex': '男', 'job': 'IT'}
补充:
dic1 = dict.fromkeys([1,2,3],[])
print(dic1)
result:{1: [], 2: [], 3: []}
dic1[1].append('alex')
print(dic1)
result:{1: ['alex'], 2: ['alex'], 3: ['alex']}
fromkeys中的第二个元素建立的共用内存地址的列表
第二种:setdefault:有此key则不做任何操作,返回对应的value,无此key则添加
dic.setdefault('sex')
result:男
dic.setdefault('hobby','讲课')
result:{'name': 'eric', 'age': 18, 'sex': '男', 'job': 'IT', 'hobby': '讲课'}
dic.setdefault('name','abby')
result:{'name': 'eric', 'age': 18, 'sex': '男', 'job': 'IT'}
二、删
第一种:
pop:通过键删除键值对,有返回值,如果没有这个键,并且设置了第二个参数也不会报错,并且返回第二个参数
print(dic.pop('name'))
print(dic)
result:
eric
{'age': 18, 'sex': '男', 'job': 'IT'}
print(dic.pop('name1','没有此键....'))
print(dic)
result:
没有此键....
{'name': 'eric', 'age': 18, 'sex': '男', 'job': 'IT'}
第二种:clear:清空
dic.clear()
result:{}
第三种:popitem:3.5 之前随机删除某个键值对,3.6以后,删除最后一组键值对。有返回值.
print(dic.popitem())
print(dic)
result:
('job', 'IT')
{'name': 'eric', 'age': 18, 'sex': '男'}
第四种:del:
按照键删除键值对
del dic['name']
result:{'age': 18, 'sex': '男', 'job': 'IT'}
删除整个字典
del dic
result:name 'dic' is not defined
补充:在循环一个字典时,不能改变字典的大小。
测试:将 dic的键中含有k元素的所有键值对删除。
dic = {'key1': 'value1','key2': 'value2', 'k3':'v3', 'name': 'abby'}
for key in dic:
if 'k' in key:
dic.pop(key)
result:dictionary changed size during iteration
三、改
第一种:
dic['age'] = 25
result:{'name': 'eric', 'age': 25, 'sex': '男', 'job': 'IT'}
第二种:
两个字典update
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic.update(dic2) #将dic2中的所有键值对覆盖并添加到dic中,dic2 不变。
result:{'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}
单独覆盖修改添加
dic.update(a='666',b='222',name='taibai')
result:{'name': 'taibai', 'age': 18, 'sex': 'male', 'a': '666', 'b': '222'}
四、查
print(dic['name'])
result:eric
print(dic.get('name'))
result:eric
print(dic.get('name1'))
result:None
print(dic.get('name1','没有此键'))
result:没有此键
print(dic.keys(),type(dic.keys()))
result:dict_keys(['name', 'age', 'sex', 'job']) <class 'dict_keys'>#类似列表的容器,可以转化为list
l1 = list(dic.keys())
print(l1)
result:['name', 'age', 'sex', 'job']
可以遍历:
for key in dic.keys(): # 可以遍历
print(key)
result:
name
age
sex
job
print(dic.values())
print(list(dic.values()))
result:可以遍历
dict_values(['eric', 18, '男', 'IT'])
['eric', 18, '男', 'IT']
print(dic.items())#可转化成list,可遍历。
result:dict_items([('name', 'eric'), ('age', 18), ('sex', '男'), ('job', 'IT')])
分别赋值
a,b = 10,20
print(a,b)
result: 10 20
a,b = [10,20]
print(a,b)
result:10 20
a,b = [(1,2),(3,4)]
print(a,b)
result:(1, 2) (3, 4)
a = 10
b = 20
a,b = b,a
print(a,b)
result:20 10
for i in dic.items():
print(i)
result:
('name', 'eric')
('age', 18)
('sex', '男')
('job', 'IT')
for k,v in dic.items():
print(k,v)
result:
name eric
age 18
sex 男
job IT
for i in dic:
print(i)
print(len(dic))
name
age
sex
job
4
                    
                
                
            
        
浙公网安备 33010602011771号