首页 > 技术文章 > 基本数据类型 字典 dict

dengyanchuan 2019-01-04 21:19 原文

今日内容
一.字典 dict
======================================基本使用======================================
1、用途:记录多个不同属性的值

2、定义方式:在{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,其中value可以是任意类型,
而key必须是不可变的类型(通常应该是str类型)
# dic={1:'aaa',1.3:'bbc',(1,2,3):'ccc','xxx':'ddd'} #dic=dict(...)
# dic={'x':1,'x':2,'x':3}
# print(dic)

数据类型转换:dict
li=(['name','egon'],('age',18),('gender','male'))

dic={}
for k,v in li: #k,v=('name','egon')
dic[k]=v

dic=dict(li)
print(dic)

dic=dict(x=1,y=2,z=3)
print(dic)

3、常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
print(dic['name'])
print(id(dic))
dic['name']='EGON'
print(dic,id(dic))

dic['height']=1.81 # 如果key不存在则新增一组key:value
print(dic)

2、长度len
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
print(len(dic))

3、成员运算in和not in
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
print('name' in dic)


4、删除
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
del dic['name']
print(dic)

t=dic.popitem() # popitem 是随机删除,也有返回值
print(t,type(t))

v=dic.pop('name') # pop 可以指定删除,但是会有一个返回值
print(v)

5、键keys(),值values(),键值对items()
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
在python2中体现出来的
>>> dic={'name': 'egon', 'age': 18, 'gender': 'male'}
>>> dic.keys()
['gender', 'age', 'name']
>>> dic.values()
['male', 18, 'egon']
>>> dic.items()
[('gender', 'male'), ('age', 18), ('name', 'egon')]

keys=dic.keys()
vals=dic.values()
items=dic.items()

print(keys)
print(vals)
print(items)

print(list(keys))
print(list(vals))
print(list(items))



6、循环
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
for k in dic.keys():
print(k)

for k in dic:
print(k)

for v in dic.values():
print(v)

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

7. get取值
dic={'name': 'egon', 'age': 18, 'gender': 'male'}
if 'xxx' in dic:
print(dic['xxx'])
else:
print(None)

v=dic.get('xxx')
print(v)

3.2 需要掌握的操作
dic.fromkeys()
li=['name','age','gender']

dic={}
for k in li:
dic[k]=None
print(dic)

dic={}.fromkeys(li,None)
print(dic)

dic={'k1':1}.fromkeys(li,None)
print(dic)


dic={}.fromkeys('hello',)
print(dic)


keys=['name','age','gender']
vals=['egon',18,'male']

dic={}.fromkeys(keys,vals)
print(dic)

keys=['name','age','gender']
vals=['egon',18,'male']

dic={}
for i in range(len(keys)):
k=keys[i]
v=vals[i]
dic[k]=v

print(dic)


dic.update() 更新,原字典中没有的补上,原字典中有更新,把更新的换上
old_dic={'name': 'egon', 'age': 18, 'gender': 'male'}
new_dic={'x':1,'name':'EGON'}
old_dic.update(new_dic)
print(old_dic)

v=dic.setdefault('height',1.81) # 字典中没有'height'这个键,则新增
print(dic)
print(v)

v=dic.setdefault('name','EGON') # 字典中有'name'这个键,不修改字典
print(dic)
print(v)

setdefault的原理分析:
k='name'
v='EGON'
if k not in dic:
dic[k]=v

print(dic)




======================================该类型总结====================================
存多个值

无序

可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)



推荐阅读