第五天、(二)字典
程序员文章站
2022-05-03 08:18:23
...
字典
字典:无序的可修改的序列
格式:a={‘name’:’‘蔡徐空’’,‘age’:18},
创建空字典:dict()
注意:
1.重要–字典的key不能是可变类型的,例如列表
2.同一字典有两个相同的key,会保留后一个key的数据
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓以下为字典的属性方法↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
一、添加
1.字典名[key]=new_value 即直接修改/如果没有,则为添加
dic = {'a': 1, 'b': 2, 'c': 3}
dic['d'] = 4
print(dic)
dic['a'] = 'xxx'
print(dic)
结果:
2.覆盖或者添加update()
dic1 = {'a': 1, 'b': 2, 'c': 3}
dic2={'a':'xxx','d':'zzzz'}
dic1.update(dic2)#dic和dic1都有的key,dic1会覆盖dic,没有的则添加至里面
print(dic1)
结果:
3.只能添加的函数setdeafult()
dic = {'a': 1, 'b': 2, 'c': 3}
dic.setdefault('a',4)#只能添加,如果原来有同key的,不会改变
print(dic)
dic.setdefault('d',6)
print(dic)
结果:
二、删除
clear(), del ,pop(),remove()
dic = {'a': 1, 'b': 2, 'c': 3}
b = dic.pop('a') # 因为字典是无序的,所以必须写key
print(b)
print(dic)
dic = {'a': 1, 'b': 2, 'c': 3}
b=dic.popitem()#随机弹出一个,储存为元组,删除原来字典中的一个
print(b)
print(dic)
dic = {'a': 1, 'b': 2, 'c': 3}
dic.clear()#清空列表
print(dic)
dic = {'a': 1, 'b': 2, 'c': 3}
del dic['a']#也可以删除整个字典
print(dic)
结果:
三、提取key,提取value,共同提取----(通过遍历)
1、提取key的keys()-------储存为列表形式
储存为列表形式
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.keys())
for k in dic.keys():
print(k)
结果:
2、提取value的values()-----------储存为列表形式
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.values())
for v in dic.values():
print(v)
结果:
3、提取key和value的items()-----------储存为元组放在列表
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.items())
for kv in dic.items():
print(kv)
#-----------------------------------------------------------------
# 还可以分别复制给k,v
dic = {'a': 1, 'b': 2, 'c': 3}
for k, v in dic.items():
print(k, v)
两种方式的结果:
四、查询key是否在字典中
dic = {'a': 1, 'b': 2, 'c': 3}
if 'a' in dic:
print('a在字典dic中')
if 'd'not in dic:
print('d不在字典dic中')
if 'a' in dic.keys():#效果同第一句话一样
print('a在字典dic中')
结果:
综合案例:
案例一:将字典a存为列表b,在把列表b存为字典c,实现互相转化
a = {'name': '张三', 'age': 18, 'sex': '男'}
b = []
c = {}
for k, v in a.items():
b.append((k, v))
print(b)
#-------------------方法一
for i in b:
c[i[0]] = i[1] #效果同下
print(c)
#---------------------方法二
for x,y in b:
c[x]=y
print(c)
结果:
案例二:将男的加个salary数据,然后将其每行分别打印为key:value
= {
'001': {'name': '张三', 'age': 18, 'sex': '男'},
'002': {'name': '李四', 'age': 19, 'sex': '女'},
'003': {'name': '王五', 'age': 18, 'sex': '男'},
'004': {'name': '李柳', 'age': 18, 'sex': '女'}
}
for k, v in a.items():
print('num:', k, end=' ')
if v['sex'] == '男':
v.setdefault('salary', '1000')
for x, w in v.items():
print(x, ':', w, end=' ')
print()
结果: