python数据类型之字典类型-dict
1.dict-基本使用
1.用途:用来存多个值,单每一个值都有一个key与之对应,
key对值有描述性的功能,存储多个值表示的不同不同状态
2.定义:{}内用逗号分隔开多个元素,每一个元素都是key:value的形式
value可以是任意数据类型,
但是key必须为不可变类型, key通常应该是字符串类型
d={'x':1,'y':2} #d=dict({'x':1,'y':2})
# d=dict(a=1,b=2,c=3)
print(d)
dic={[1,2,3]:'a'} 直接报错 key不能是列表 字典的key是不可以变类型
dic={{'x':1}:'a'} 直接报错
3.常用操作+内置的方法
1.按key存取值:可存可取
d={'x':1,'y':2} 不能赋值,通过key修改,可以增加
d['x']=100
print(d) key不存在是,会报错
d['z']=3
print(d)
2. 长度len
d={'x':1,'y':2}
print(len(d))
3、成员运算in和not in
d={'x':1,'y':2}
print('x' in d)
4.删除 del pop popitem
d={’x':1,‘y':2} del直接删除
del d['x']
l={'a':1,'b':2}
se=l.pop('a') 根据key删除
print(l)
print(se)
# res=d.popitem() 随机删除
popitem # print(d)
# print(res)
5、键keys(),值values(),键值对items()key和value都取出
keys=msg_dic.keys() keys后是一个整体
print(keys)
for k in keys:
print(k)
print(list(keys) 通过列表转换方式取出
vals=msg_dic.values() 同上
# print(vals)
# print(list(vals))
# for k,v in msg_dic.items(): #k,v=('apple', 10) items取出key,和值两个
# print(k,v)
6、循环
msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
}
# 只取key
# for k in msg_dic:
# print(k,msg_dic[k])
# for k in msg_dic.keys():
# print(k,msg_dic[k])
# 只取value
# for v in msg_dic.values():
# print(v)
#取key和value
# for k,v in msg_dic.items(): #k,v=('apple', 10) items取出key,和值两个
# print(k,v)
7. 查看get
d={'x':1,'y':2,'z':3}
# v=d.get('xxxx') key不存在 提示none
# print(v)
d['xxx']=100
print(d) key不存在是,会报错
8.update
# d={'x':1,'y':2,'z':3}
# d1={'a':1,'x':1111111} 更新字典
# d.update(d1)
# print(d)
9.fromkeys 生成一个初始字典 值是None
l=['name','age','sex']
d=dict.fromkeys(l,None)
print(d)
10.setdefault 向字典里面加值,有key的话返回原值,没有直接加
info={'name':'egon','age':18,'sex':'male'}
# 如果字典中有setdefault指定的key,那么不改该key对应的值,返回原的value
# res=info.setdefault('name',’pwd') 有返回值
# print(info)
# print(res)
# 如果字典中没有setdefault指定的key,那么增加一个key:value,返回新的value
# info.setdefault('height',1.80) 返回一个新赋值
# print(info)
# info={'age':18,'sex':'male'}
# v=info.setdefault('name','浩哥')
# print(v)
s='hello alex alex say hello sb sb' 用字典统计同名出现的次数
l=s.split()
print(l)
d={}
# d={'hello':2,'alex':2}
for word in l: #word='alex'
1 # d[word]=l.count(word) #d['alex']=2 每个都赋值
2 d.setdefault(word,l.count(word)) 赋值过的
print(d)
二:该类型总结
1 存一个值or存多个值
可以存多个值,值都可以是任意类型,而key必须是不可变类型,通常应该是不可变类型中字符串类型
2 有序or无序
无序
3 可变or不可变
可变
d={'x':1,'y':2}
print(id(d))
d['x']=1111
print(id(d))