字典是有“键-值”对组成的集合,字典中的“值”通过“键”来引用。“键-值”对之间用逗号隔开,并且被包含在一对花括号中。
字典的创建
格式
dictionary_name = {key1 : value1, key2 : value2, ...}
创建空的字典
dictionary_name = {}
例如
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
输出
{'s': 'shanghai', 'b': 'beijing', 'g': 'guangzhou', 'w': 'wuhan'}
注意:字典将会按照每个元素的Hashcode值进行排序,而且,字典的“键”是区分大小写的。
字典的访问
字典与元组或者列表不同,不是通过索引访问的,而是通过“键”值访问value值的。
格式
value = dictionary_name[key]
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#访问'shanghai'
print dict['s']
字典元素的添加和修改
在字典中,只需一条赋值语句就实现了字典元素的添加和修改,所不同的是,若增加的元素在字典中不存在就是添加,若已经存在就是修改。
例如
#coding:UTF-8
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict
#添加{'c' : 'chongqing'}
dict['c'] = 'chongqing'
print dict
#修改'wuhan'为'wuchang'
dict['w'] = 'wuchang'
print dict
字典中的常用方法
方法名 | 说明 |
---|---|
items() | 返回(key,value)元组组成的列表 |
iteritems() | 返回指向字典的遍历器 |
setdefault(k[,d]) | 创建新的元素并设置默认值 |
pop(k[,d]) | 删除索引k对应的value值,并返回该值 |
get(k[,d]) | 返回索引k对应的value值 |
keys() | 返回字典中 key 的列表 |
values() | 返回字典中 value的列表 |
update(E) | 把字典E中的数据扩展到原字典中 |
sorted() | 排序 |
copy() | 复制一个字典中所有的数据 |
- items方法主要用于实现字典的遍历操作,返回的是由若干元组组成的列表。
#coding:UTF-8
#items()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.items()
输出
[('s', 'shanghai'), ('b', 'beijing'), ('g', 'guangzhou'), ('w', 'wuhan')]
#coding:UTF-8
#使用items()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
for (k, v) in dict.items():
print 'dict[%s] = ' % k ,v
输出
dict[s] = shanghai
dict[b] = beijing
dict[g] = guangzhou
dict[w] = wuhan
- iteritems方法主要是生成遍历器,用于实现字典的遍历,除此之外还有iterkeys()方法和itervalues()方法。
coding:UTF-8
#使用iteritems()方法遍历字典
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.iteritems()#构造遍历器
for k, v in dict.iteritems():
print 'dict[%s] = ' % k , v
- setdefault方法用于创建新的元素并设置默认值。
#coding:UTF-8
#设置默认值
dict = {}#空的字典
dict.setdefault('b')#{'b': None}
print dict
dict['b'] = 'beijing'
#已经设置了'b'对应的值,再设置默认将无效
dict.setdefault('b', 'default')
print dict
- pop方法用于删除指定的key处的值。
#coding:UTF-8
#删除操作
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#删除key值为's'处的值
dict.pop('s')
print dict
#coding:UTF-8
#删除操作还有使用内建的方法del()
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#使用del方法
del(dict['s'])
print dict
#coding:UTF-8
#字典的清空使用clear()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#清空
dict.clear()
print dict #空的字典
- get方法用于得到key键处的值。
#coding:UTF-8
#get()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.get('s')#shanghai
- keys方法用于返回字典中的key的列表。
#coding:UTF-8
#keys()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.keys()#['s', 'b', 'g', 'w']
- values方法用于返回字典中的value的列表。
#coding:UTF-8
#values()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
print dict.values()#['shanghai', 'beijing', 'guangzhou', 'wuhan']
- update函数主要实现的是将一个字典中的元素增加到另一个字典中。
#coding:UTF-8
#update()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai'}
dict_2 = {'w' : 'wuhan', 'g' : 'guangzhou'}
dict_1.update(dict_2)
print dict_1
注意,若出现dict_2中有dict_1中的键,则会更新。
- sorted排序函数。
#coding:UTF-8
#sorted()方法
dict = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
#按照key排序
print sorted(dict.items(), key = lambda d: d[0])
#按照value排序
print sorted(dict.items(), key = lambda d: d[1])
- copy函数实现的是字典的浅拷贝。
#coding:UTF-8
#copy()方法
dict_1 = {'b' : 'beijing', 's' : 'shanghai', 'w' : 'wuhan', 'g' : 'guangzhou'}
dict_2 = {'c' : 'chongqing'}
dict_2 = dict_1.copy()
print dict_2#{'s': 'shanghai', 'b': 'beijing', 'w': 'wuhan', 'g': 'guangzhou'}
注意:清除了dict_2中原有的元素。浅拷贝是指只拷贝数据不拷贝数据之间的关系,新的数据和旧的数据使用的是同一块内存空间;对应的是深拷贝,既拷贝数据,也拷贝数据之间的关系,新的数据和旧的数据使用的是不同的内存空间。在python中可以使用copy模块来实现对象的深拷贝和浅拷贝,其中的deepcopy()用于深拷贝操作,copy()用于浅拷贝操作。
#coding:UTF-8
#copy模块
import copy
dict_1 = {'a' : 'beijing', 'b' : {'s' : 'shanghai', 'w' : 'wuhan'}}
dict_2 = copy.deepcopy(dict_1)#深拷贝
dict_3 = copy.copy(dict_1)#浅拷贝
dict_2['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shanghai', 'w': 'wuhan'}}
dict_3['b']['s'] = 'shenyang'
print dict_1#{'a': 'beijing', 'b': {'s': 'shenyang', 'w': 'wuhan'}}
网友评论