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

 

posted @ 2020-02-15 14:24  李茗西  阅读(141)  评论(0)    收藏  举报