|||
1 什么是字典(Dictionary)?
字典是Python中唯一内建的映射类型,可以建立对象之间的映射关系。字典的每一个元素可以形成key-value对(键-值对)。
key - 键,可以是数字、字符串、元组等不可变的类型,因而不能是列表!
value - 值,无序的,仅和key有关。
2 创建字典
2.1 {}直接创建
>>> aDict = {'a': 0.15, 'b': 0.3, 'c': 0.45}
# 创建一个空字典
>>> Dict0 = {}
2.2 dict()函数
2.3 {}.fromkeys函数
用于生成值相同的字典。
2.4 dict()与zip()函数结合使用
dict(zip(keys, values))
2.5 脚本示例
3 字典的基本操作
键值查找,更新,添加,成员判断,删除字典成员
注:序列通过索引来确定对象,而字典通过键来确定对象。
>>> aDict = {'a': 1, 'b': 2, 'c': {'c': 3, 'd': 4}}
>>> aDict['c']['d']
>>> 4
5 字典作为可变长关键字参数
- 字典可以作为函数的特殊类型参数,如可变长关键字参数。
5 字典的内建函数
dict() - 创建字典
len() - 键值对个数
hash() - 哈希函数,返回对象的哈希值。哈希值是哈希算法生成的一段二进制值,不同的数据具有不同的哈希值。可变的对象是不可哈希的,而不可变的对象是可哈希的,具有哈希值。
6 字典方法
#-----------------------------------------------------------------------
提取字典的键和值 - keys(), values(), get(), setdefault()
#-----------------------------------------------------------------------
keys() - 返回一个列表,元素为字典中所有的key。
Dict1.keys()
values() - 返回一个列表,元素为字典中所有的value。
Dict1.values()
get() - 返回指定键的值,如果键不在字典中,默认无返回值。
Dict1.get(key1, defaults=None)
setdefalut() - 同get()。
Dict1.setdefault(key1, defaults=None)
key1 — 需要被检索的键。强制参数。
注:上例中,‘d’不是aDict的键,若此时运行aDict['d'],程序会因出现异常而终止;而get()则不返回值,且不出现异常,不会终止程序,因而推荐使用get()方法。
#--------------------------------------------------------------------------
判断键是否在字典中 - has_key() 对比: in, not in 操作符
#--------------------------------------------------------------------------
has_key() - 判断键是否存在于字典中,如果键在字典里,返回True,否则返回False。仅存在于Python2!
Dict1.has_key(key1)
key1 — 需要被检索的键。强制参数。
对比:
in - 判断键是否存在于字典中,如果键在字典里,返回True,否则返回False。
not in - 判断键是否不存在于字典中,如果键不在字典里,返回True,否则返回False。
#-----------------------------------------------------------
遍历字典的键值元组 - items() 对比:for 循环
#-----------------------------------------------------------
items() - 以列表返回可遍历的(键, 值) 元组数组。
Dict1.items()
#-------------------------------------------------------------
删除字典的元素 - clear(), pop() 对比: del 语句
#-------------------------------------------------------------
clear() - 清空字典,将原先的字典变为空字典。
Dict1.clear()
pop() - 弹出指定的键值对,并返回字典中指定键的值。修改原字典。
Dict1.pop(key1)
key1 — 被弹出值对应的键。强制参数。
对比:
del 语句 - 删除字典,原先的字典不复存在。也可删除字典中的某个键值对。
del Dict1
del Dict1[key1]
#-------------------------------------------------------
创建新字典 - fromkeys()
#-------------------------------------------------------
fromkeys() - 创建一个新字典,以序列seq中的元素做字典的键,val为字典所有键对应的初始值,默认为None。
{}.fromkeys(seq, val)
seq — 一个序列,其元素为新字典的键。强制参数。
val — 新字典里所有键对应的初始值,若不设置则默认为None。可选参数。
#---------------------------------------------------------------------
更新字典的键值对 - update() 对比:直接添加键值对
#---------------------------------------------------------------------
update() - 把字典Dict2的键值对更新(包括以新换旧和添加)到Dict1中,无返回值。
Dict1.update(Dict2)
Dict2 — 需要被添加和更新到Dict1的字典。强制参数。
对比:
直接添加键值对
Dict1[a_key]=a_value
a_key — 需要被添加到字典Dict1的键。强制参数。
a_value — 需要被添加到字典Dict1的与a_key对应的值。强制参数。
#----------------------------------------------------------------
字典的浅复制 - copy() 对比:对象赋值
#----------------------------------------------------------------
copy() - 返回字典的浅复制。
Dict1.copy()
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-1 19:18
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社