Python-字典类型(Dict)

1.定义: {}内用逗号分隔开多个key:value,其中value可以是任意类型,但是key必须是不可变类型(通常key是字符串),且key不能重复

    字典的特性:
  dict是无序的
  key必须是唯一的


# d={'k1':111,(1,2,3):222}   #d=dict({'k1':111,(1,2,3):222})
#根据字典的key获取到该key对应的value值
print(d['k1'])  
# 111
print(d[(1,2,3)])
# 222
d={} #默认定义出来的是空字典
# print(d,type(d))
# {} <class 'dict'>

d1=dict() #使用dict()方法定义空字典
# print(d1,type(d1))
# {} <class 'dict'>
d2=dict(x=1,y=2,z=3)
# print(d2)
# {'x': 1, 'y': 2, 'z': 3}
d3=dict([["name","llj"]])
# print(d3)
#{'name': 'llj'}

2.数据类型转换
d1={'k1':'llj'}
d1['k1']='haha'
print(d1)
{'k1': 'haha'}

info=[
["name","llj"],
("age",20),
["job","IT"]
]
#将列表转换成字典
#方式一:
'''
d={}
for k in info:
#print(k,type(k))
#['name', 'llj'] <class 'list'>
#('age', 20) <class 'tuple'>
#['job', 'IT'] <class 'list'>
d[k[0]]=k[1] #注意获取字典的key的写法,字典的key是从列表中获取第0个索引.写法:字典[列表[获取列表第0个索引]]
print(d)
'''

d={}
for itme in info:
d[itme[0]]=itme[1]
print(d)
{'name': 'llj', 'age': 20, 'job': 'IT'}

#方式二:
d={}
for k,v in info: #解压赋值 k,v=[name":"llj"]
d[k]=v
print(d)
{'name': 'llj', 'age': 20, 'job': 'IT'}

#方式三:
res=dict(info) #一行代码搞定上述for循环工作
print(res)
{'name': 'llj', 'age': 20, 'job': 'IT'}

#造成这样的字典 d={"name":"None","age":"None","sex":"None","job":"None"}
#方法一:
l=["name","age","sex","job"]
d={}
for i in l:
d[i]=None
print(d)
{'name': None, 'age': None, 'sex': None, 'job': None}

#方法二:
#fromkeys() 创建一个新的字典,其中的键来自iterable,值设置为None
l=["name","age","sex","job"]
d={}
d={}.fromkeys(l)
print(d)
{'name': None, 'age': None, 'sex': None, 'job': None}

#优先掌握的操作
#按key存取值,可存可取
d={'k1':111}
print(d['k1'])   #取值
111

#针对赋值操作:key存在,则修改
d['k1']=222
print(d)
{'k1': 222}
#针对赋值操作:key不存在,则创建新增
d['k2']=333
print(d)
{'k1': 111, 'k2': 333}

#len长度
d1={"k1":111,"k2":222,"k1":333,"k1":444}
print(d1) #字典的key不能重复
{'k1': 444, 'k2': 222}
print(len(d1)) #字典根据key
2

#成员运算 in和not in
d1={"k1":111,"k2":222}
print("k1" in d1)
True
print("111" in d1)
False
#删除
d1={"k1":111,"k2":222}
del d1['k1'] #通用删除
print(d1)
{'k2': 222}

#pop删除  根据key删除元素,返回删除key对应的那个value值
res_v=d1.pop('k1')
print(res_v)
111

#popitem删除  随机删除,返回元祖
res_t=d1.popitem()
print(res_t)
('k2', 222)

"""
python2中:keys() values() items()
d1={"k1":111,"k2":222}
print(d1.keys())
["k1","k2"]
print(d1.values())
[111,222]
print(d1.items())
[("k1",111,"k2",222)]
相当于
d1=d.dict([("k1",111,"k2",222)])
print(d1)
{"k1":111,"k2":222}
"""
#for循环
d1={"k1":111,"k2":222}
#获取字典所有keys,方式一
for k in d1.keys():
print(k)
k1
k2

#获取字典所有keys,方式二
for k in d1: #字典默认循环所有key
print(k)
k1
k2

'''
for循环工作原理:for循环可以称之为叫迭代器循环
for i in 可迭代对象.__iter__()
for i in 迭代器对象.__iter__()
'''
for i in d1:
print(i)

#等价于

for i in d1.__iter__():
print(i)

#k1
#k2


#获取字典所有values
for v in d1.values():
print(v)
111
222

#获取字典所有keys和values
for i in d1.items():
print(i)
('k1', 111)
('k2', 222)

for k,v in d1.items():
print(k,v)
k1 111
k2 222

#将获取的keys和values转成python2中的那种
res_keys=list(d1.keys())
print(res_keys)
['k1', 'k2']

res_values=list(d1.values())
print(res_values)
[111, 222]

res_items=list(d1.items())
print(res_items)
[('k1', 111), ('k2', 222)]


















 
 
posted @ 2020-07-27 16:47  梁博客  阅读(318)  评论(0)    收藏  举报