In [1]:
infos_dict={"name":"dnt","web":"dkill.net"} #空字典定义 dict={}
In [2]:
# 遍历keys
for item in infos_dict.keys():
    print(item)
name
web
In [3]:
#注意,如果你直接对infos遍历,其实只是遍历keys
for item in infos_dict:
    print(item)
name
web
In [4]:
# 遍历values
for item in infos_dict.values():
    print(item)
dnt
dkill.net
In [5]:
# 遍历键值对
for item in infos_dict.items():
    print("Key:%s,Value:%s"%(item[0],item[1]))
Key:name,Value:dnt
Key:web,Value:dkill.net
In [6]:
#每一次相当于取一个元组,那可以用之前讲的例子来简化了: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
In [7]:
######################## dict添加修改 ##################################
In [8]:
# 增加 修改 (有就修改,没就添加)
# 添加
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'}
In [9]:
# 补充:dict内部存放的顺序和key放入的顺序是没有关系的
# dict的key必须是不可变对象(dict根据key进行hash算法,来计算value的存储位置
# 如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了)
In [10]:
######################## dict删除系列 ##################################
In [11]:
# 要删除一个key,用pop(key)方法,对应的value也会从dict中删除
infos_dict.pop("wechat") #返回key对应的值
Out[11]:
'dotnetcrazy'
In [12]:
infos_dict #查看列表
Out[12]:
{'name': 'dnt', 'web': 'dkill.net'}
In [13]:
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'
In [14]:
del infos_dict["name"] #没有返回值
print(infos_dict)
{'web': 'dkill.net'}
In [15]:
del infos_dict["dog"] #不存在就报错
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-15-03ea1653c0ed> in <module>()
----> 1 del infos_dict["dog"] #不存在就报错

KeyError: 'dog'
In [16]:
#清空字典内容
infos_dict.clear()
print(infos_dict)
{}
In [17]:
# 删除字典
del infos_dict
In [19]:
######################## dict查询系列 ##################################
In [20]:
infos_dict={"name":"dnt","web":"dkill.net"} #刚才被删掉了,我们重新定义一下
In [21]:
infos_dict["name"]
Out[21]:
'dnt'
In [22]:
infos_dict["mmd"] #查不到就异常
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-22-bc0a122c60bb> in <module>()
----> 1 infos_dict["mmd"] #查不到就异常

KeyError: 'mmd'
In [23]:
# 要避免key不存在的错误,有两种办法
# 一是通过in判断key是否存在:
print("mmd" in infos_dict)
False
In [24]:
# 二是通过dict提供的get()方法
infos_dict.get("name")
print(infos_dict.get("mmd"))#如果key不存在,返回None
print(infos_dict.get("mmd",-1))#也可以返回自己指定的value
None
-1
In [25]:
######################## 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'
In [26]:
# 查看帮助
# help(infos_dict)
len(infos_dict) #有几对key,value 
# infos_dict.has_key("name") #这个是python2里面的
Out[26]:
2
In [1]:
# 补充:dict内部存放的顺序和key放入的顺序是没有关系的
# dict的key必须是不可变对象(dict根据key进行hash算法,来计算value的存储位置
# 如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了)
In [9]:
key1=(1,2,3)
key2=[1,2,3]
key3={"1":"2"}
In [10]:
dic={}
In [11]:
dic[key1]="mmd"
In [12]:
dic[key2]="dnt"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-12-1be04ebe9374> in <module>()
----> 1 dic[key2]="dnt"

TypeError: unhashable type: 'list'
In [13]:
dic[key3]="test"
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-13-6fdf1417285b> in <module>()
----> 1 dic[key3]="test"

TypeError: unhashable type: 'dict'
In [ ]: