Python字典(dict)是一个无序的集合,它和Python集合(set)类似。

Python字典(dict)在外面使用中括号{}, 中间元素使用逗号分隔的 key: value 键值对,字典的value值可以通过key直接访问。

Python 字典(dict)

Python字典的声明

#!/usr/bin/python
# coding=utf-8
person = {"id":10,"name":"张三","age":23}
print(type(person))  #输出: <class 'dict'>
上面的例子中,person是一个字典对象,在 {} 中包含键值对(key:value)。字典的左侧是一个键(key),右侧是一个值(value)。

字典的键key应该是唯一的并且是不可变的对象。输出是字典的类dict。

Python字典的数字、字符串或元组也可以用作字典的键。看下面的例子:

d = {} # 空字典
dict1={1:"One", 2: "Two", 3:"Three"} # 整数类型key
dict2={1.5:"1.5", 2.5: "2.5", 3.5:"3.5"} # 浮点数类型key
dict3={("1","2","3"):"1到3", ("4","5","6"): "4到6"} # 元祖类型的key
dict4= {'one':1, 'two':2, 'three':3, 'four':4, 'five':5} # 字符串类型的key

注意:Python字典的key不可以使用可变对象作为key。

但是,Python不可以用列表作为字典的键,否则报错:TypeError: unhashable type: 'list'。

dic = {["one","two"]:"12", ["three", "four"]:"34"} 
同一个键不能在集合中出现多次。如果该键出现了多次,则只保留最后一次。Python的值可以是任何数据类型。一个值可以指定给多个键。
#!/usr/bin/python
# coding=utf-8
numNames = {1:"One", 2:"Two", 3:"Three", 2:"Two", 1:"One", 2:"Two"}
print(numNames)  #输出: {1:"One", 2:"Two", 3:"Three"}

可以使用dict()构造函数方法创建字典。

dict1 = dict()
dict2 = dict(a=1, b=1, c=1) 

访问Python字典元素

Python字典是一个无序的集合,所以不能通过索引值访问元素。

可以通过中括号的方式,里面包裹字典的键key访问字典的元素,看下面的例子。

#!/usr/bin/python
# coding=utf-8
dict1={1:"One", 2: "Two", 3:"Three"} # 整数类型key
dict2= {'one':1, 'two':2, 'three':3, 'four':4, 'five':5} # 字符串类型的key
print(dict1[2])
print(dict2['two']) 
注意:Python访问字典元素的key是区分大小写的。

也可以使用get()方法访问字典的元素,这样在字典的元素不存在的时候也不会报错,只会返回None。

#!/usr/bin/python
# coding=utf-8
dict1={1:"One", 2: "Two", 3:"Three"} # 整数类型key
dict2= {'one':1, 'two':2, 'three':3, 'four':4, 'five':5} # 字符串类型的key
print(dict1.get(4))
print(dict2.get("ten")) 

上面的例子中,key为4和ten不存在,所以返回None。

Python字典的遍历

使用for循环迭代遍历Python的字典元素。

#!/usr/bin/python
# coding=utf-8
dict1={1:"One", 2: "Two", 3:"Three"} # 整数类型key
for key in dict1:
    print("Key = " + str(key) + ", Value = " + dict1.get(key)) 
输出:
Key = 1, Value = One
Key = 2, Value = Two
Key = 3, Value = Three

 Python字典元素更新

更新字典元素也是经常需要操作的方法,我们通过方括号的方式直接修改字典的值value,看下面的例子 。

#!/usr/bin/python
# coding=utf-8
dict = {"one":"111", "two":"222", "three":"333"}
print(dict)

dict['one'] = '一'
dict['two'] = '二'
print(dict) 
输出:
{'one': '111', 'two': '222', 'three': '333'}
{'one': '一', 'two': '二', 'three': '333'}

 我们也可以给字典增加一个新的键值对。

#!/usr/bin/python
# coding=utf-8
dict = {"one":"111", "two":"222", "three":"333"}
print(dict)

dict['five'] = '555'
dict['six'] = '666'
print(dict) 

删除Python字典元素

可以使用del关键字、pop()或popitem()方法从字典或字典对象本身中删除键值对。

要删除键值对,可以使用del[key]方法。要删除字典对象本身,请使用del dict_obj。

#!/usr/bin/python
# coding=utf-8
sites = {'taobao': '淘宝', 'yxjc123': '易学教程', 'baidu': '百度'}
print(sites)

del sites['taobao'] # 删除key为taobao
print(sites)

del sites  # 删除对象本身
print(sites) #error

判断Python字典键是否存在

检查判断python字典的键是否存在是经常使用的方法。

#!/usr/bin/python
# coding=utf-8
sites = {'taobao': '淘宝', 'yxjc123': '易学教程', 'baidu': '百度'}
b = 'taobao' in sites
print(b) #True

b = 'yxjc123' in sites
print(b)  #True

b = 'jd' in sites
print(b)  #False

获取Python字典的键或值列表

可以通过keys()和values()方法返回分别包含键和值的列表。

#!/usr/bin/python
# coding=utf-8
sites = {'taobao': '淘宝', 'yxjc123': '易学教程', 'baidu': '百度'}
print(sites.keys()) #输出: dict_keys(['taobao', 'yxjc123', 'baidu'])
print(sites.values())  #输出: dict_values(['淘宝', '易学教程', '百度'])

Python字典方法函数

介绍Pyhton的dict字典函数

函数说明
keys()获取字典的键列表
values()获取字典的值列表
get()
通过字典的键获取值
clear()
清空字典
items()
用于将字典转为元祖列表。
pop()
根据字典的键删除元素
fromkeys()创建一个字典,其中key为可迭代对象,value为指定的值。
copy()
浅复制
popitem()移除并返回元组
setdefault()返回指定键的值