infos_dict={"name":"dnt","web":"dkill.net"} #空字典定义 dict={}
# 遍历keys
for item in infos_dict.keys():
print(item)
name web
#注意,如果你直接对infos遍历,其实只是遍历keys
for item in infos_dict:
print(item)
name web
# 遍历values
for item in infos_dict.values():
print(item)
dnt dkill.net
# 遍历键值对
for item in infos_dict.items():
print("Key:%s,Value:%s"%(item[0],item[1]))
Key:name,Value:dnt Key:web,Value:dkill.net
#每一次相当于取一个元组,那可以用之前讲的例子来简化了:c,d=a #等价于:c=a[0] d=a[1]
for k,v in infos_dict.items():
print("Key:%s,Value:%s"%(k,v))
Key:name,Value:dnt Key:web,Value:dkill.net
######################## dict添加修改 ##################################
# 增加 修改 (有就修改,没就添加)
# 添加
infos_dict["wechat"]="lll"
print(infos_dict)
# 修改
infos_dict["wechat"]="dotnetcrazy"
print(infos_dict)
{'name': 'dnt', 'web': 'dkill.net', 'wechat': 'lll'} {'name': 'dnt', 'web': 'dkill.net', 'wechat': 'dotnetcrazy'}
# 补充:dict内部存放的顺序和key放入的顺序是没有关系的
# dict的key必须是不可变对象(dict根据key进行hash算法,来计算value的存储位置
# 如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了)
######################## dict删除系列 ##################################
# 要删除一个key,用pop(key)方法,对应的value也会从dict中删除
infos_dict.pop("wechat") #返回key对应的值
'dotnetcrazy'
infos_dict #查看列表
{'name': 'dnt', 'web': 'dkill.net'}
infos_dict.pop("wechat") #key不存在,则报错
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-13-dc5eeda55ffa> in <module>() ----> 1 infos_dict.pop("wechat") #key不存在,则报错 KeyError: 'wechat'
del infos_dict["name"] #没有返回值
print(infos_dict)
{'web': 'dkill.net'}
del infos_dict["dog"] #不存在就报错
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-15-03ea1653c0ed> in <module>() ----> 1 del infos_dict["dog"] #不存在就报错 KeyError: 'dog'
#清空字典内容
infos_dict.clear()
print(infos_dict)
{}
# 删除字典
del infos_dict
######################## dict查询系列 ##################################
infos_dict={"name":"dnt","web":"dkill.net"} #刚才被删掉了,我们重新定义一下
infos_dict["name"]
'dnt'
infos_dict["mmd"] #查不到就异常
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-22-bc0a122c60bb> in <module>() ----> 1 infos_dict["mmd"] #查不到就异常 KeyError: 'mmd'
# 要避免key不存在的错误,有两种办法
# 一是通过in判断key是否存在:
print("mmd" in infos_dict)
False
# 二是通过dict提供的get()方法
infos_dict.get("name")
print(infos_dict.get("mmd"))#如果key不存在,返回None
print(infos_dict.get("mmd",-1))#也可以返回自己指定的value
None -1
######################## dict扩展系列 ##################################
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-25-77ea4b9a4932> in <module>() ----> 1 infos_dict.has_key("name") AttributeError: 'dict' object has no attribute 'has_key'
# 查看帮助
# help(infos_dict)
len(infos_dict) #有几对key,value
# infos_dict.has_key("name") #这个是python2里面的
2
# 补充:dict内部存放的顺序和key放入的顺序是没有关系的
# dict的key必须是不可变对象(dict根据key进行hash算法,来计算value的存储位置
# 如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了)
key1=(1,2,3)
key2=[1,2,3]
key3={"1":"2"}
dic={}
dic[key1]="mmd"
dic[key2]="dnt"
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-12-1be04ebe9374> in <module>() ----> 1 dic[key2]="dnt" TypeError: unhashable type: 'list'
dic[key3]="test"
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-13-6fdf1417285b> in <module>() ----> 1 dic[key3]="test" TypeError: unhashable type: 'dict'