一,字典的基本形式:
类似于c++中的map,反映了映射这一数据结构,通过键值对的形式储存了数据之间的对应关系。
基本形式:
{ 键1: 值1 , 键2:值2,..... }
补充:
其中只有不可改变的才能充当键,不可修改:如元组, ......;
任何类型的数据均可以充当值, 可以修改;
二,字典的创建与访问:
直接构建:
dicarea = {'zhonguo': 1231, 'sdf': 3223, 'sdfaa': 1232}
使用内置函数dict创建字典:
python支持将双元素序列转化成字典:
items = [('russia', 12012), ('china', 960)]
dicarea = dict(items)
关于字典键与值的特别说明:
I, 键具有唯一性,不允许出现相同的键,但允许不同的键对于相同的值。
II, 字典中的键必须是不可变的类型,一般是字符串、数字或 者元组;而值却可以是任何数据类 型。
III,若字典中需要用多个元素组成值,则应用元组包括
字典的访问:
字典是不能通过索引下标访问的,必须通过键名进行访问条目的值。
三,对字典的操作:
空字典与字典的更新:
可以只用一堆大括号来创建一个空字典
dicarea = {}
type(dicarea)
直接键值对信息来更新字典:
若键名已存在,则将其值进行更新;若不存在,则创建。
dic['sadfa'] = 121232
字典的删除操作:
1,用del命令删除指定条目:
del 字典名[ 键 ] ;
2,用pop方法删除指定条目:
字典名. pop(键, 默认值)
在删除的同时会返回删除的值,若要删除的键不存在,则会返回默认值。
dicarea = {'russia': 1201, 'china': 2121, 'china': 960}
area = dicarea.pop('russia', 0)
area
3,用popitem删除字典的随机条目:
字典名.popitem();
随机删除并以元组形式返回该条条目。
4,用clear方法清空字典条目(使该字典成为空字典):
字典名.clear()
5, 直接删除整个字典:
del 字典名
查找字典条目:
1,判断字典中是否含有该个条目:
键 in 字典
2,get函数获取条目的值:
字典名.get (键, 默认值)
【不存在时,会返回默认值】
## 统计字母出现频率
dic = {}
a = "life is short , we need python"
for c in a:
dic[c] = dic.get(c, 0) + 1
print(dic)
字典的遍历:
· 字典.items( ) : 遍历所有条目,并以双元素列表形式返回;
· 字典.keys( ) :提取所有的键,并以列表形式返回;
· 字典.values( ) : 提取所有的值, 并以列表形式返回;
for key in dic.keys():
print(key)
for value in dic.values():
print(value)
字典的排序:
字典本身是无序的,只能用python内置函数sorted,将条目按照希望的顺序进行排列;
(排序的结果是关于键的有序列表)
## 根据面积大小对国家进行排序
dicareas = {'russia': 1707.5, 'canda': 997.1, 'china': 960.1}
isvk = [(v, k) for k, v in dicareas.items()] ## 使用列表生成器生成列表
isvk.sort()
iskv = [(k, v) for v, k in isvk]
字典的合并:
字典的合并即是将两个字典合并成一个字典,理解为字典的扩充
1,使用字典的update函数:
将参数字典条目合并进原字典中:
字典名.update(参数字典名)
相同键的条目只保留一个
2,使用dict函数将两个字典合并成一个新字典:
dictnew = dict(字典1, **字典2)
实质上是按键实现的值合并
## 将两个信息揉在一起
dicAreas={'俄罗斯':1707.5,'加拿大':997.1,'中国':960.1,'美国':936.4,'巴西':854.7}
dicCapitals={'俄罗斯':'莫斯科','加拿大':'渥太华','中国':'北京','美国':'华盛顿','巴西':'巴西利亚'}
diccountry = {}
for key in dicAreas.keys():
diccountry[key] = [dicArea[key], dicCapitals[key]]