第九章、Python数据类型(字典dict)
字典(dict)
Python中字典由花括号 {} 加键值对组成,每个键值对(key:value) 用冒号 : 隔开,每个对之间用逗号(,)分割,格式如下所示:
dict = {key1 : value1, key2 : value2, key3 : value3 }
键是唯一的不能重复,所以可以用数字,字符串或元组充当,而用列表就不行。值不唯一。
1)字典创建
>>> a={} #创建空字典
>>> a["key1"]=12 #给字典中添加键值对
>>> a
{'key1': 12}
>>> b=dict(key1=32,key2=43) #利用dict()函数创建字典
>>> b
{'key2': 43, 'key1': 32}
>>> c=(['q','w'],[1,2])
>>> c=dict(c) #dict()函数加元组构成字典
>>> c
{'q': 'w', 1: 2}
以上方法得到的还是原来的字典,即在字典上操作
Python 字典 fromkeys() 函数,创建一个新字典
语法: dict.fromkeys(seq, value)
以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。
参数
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。
返回值
该方法返回一个新字典。
>>> d= {}.fromkeys(("q","w"),(1,2)) #
>>> c
{'q': 'w', 1: 2}
>>> d
{'q': (1, 2), 'w': (1, 2)}
2)基本操作:
- len(d),返回字典(d)中的键值对的数量
- d[key],返回字典(d)中的键(key)的值,若键不存在,则报错
- d.get(key),得到键key的值,若键不存在,则返回None
- d[key]=value,将值(value)赋给字典(d)中的键(key)
- del d[key],删除字典(d)的键(key)项(将该键值对删除)
- d.clear() 函数,清空字典
- key in d,检查字典(d)中是否含有键为key的项
- str(d),输出字典,以可打印的字符串表示。
>>> a={1:12,2:13,3:14}
>>> a.[4]
File "<stdin>", line 1
a.[4]
^
SyntaxError: invalid syntax #dict[key]与dict.get(key)的区别
>>> a.get(4)
>>>
>>> print(a.get(4))
None
copy()函数,复制新的变量 dict.copy()
>>> q=d.copy() #copy后在新变量上操作不影响原来的变量
>>> q
{'q': (1, 2), 'w': (1, 2)}
>>> id(d)
139753898228264
>>> id(q)
139753942536832
>>> w=d #在原来变量上操作
>>> id(w)
139753898228264
3)setdefault() 函数和 get()类似, 得到键的值,如果键不存在于,则添加键并将值设为默认值None。
语法:dict.setdefault(key, default=None)
>>> a
{1: 12, 2: 13, 3: 14}
>>> a.setdefault(4)
>>> a
{1: 12, 2: 13, 3: 14, 4: None}
>>> a.setdefault(5,16)
16
>>> a
{1: 12, 2: 13, 3: 14, 4: None, 5: 16}
4)items()和iteritems()函数
items()函数,将字典以列表形式返回,列表中的元素是由字典中的键和值组成的元组
>>> b={1: 12, 2: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (2, 13), (3, 14), (4, None), (5, 16)]
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
iteritems()函数,将字典返回成迭代器,是一个'dictionary-itemiterator'类型,不过这种迭代器类型的数据不能直接输出,必须用list()转换一下,才能看到里面的真面目。
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.items()
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
>>> c=b.iteritems()
>>> c
<dictionary-itemiterator object at 0x7f743743efc8>
>>> list(c)
[(1, 12), (3, 14), (4, None), (5, 16), (7, 13)]
5)keys()和values()函数
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.keys() #提取字典中的键
[1, 3, 4, 5, 7]
>>> b.values() #提取字典的值
[12, 14, None, 16, 13]
6)pop()和popitem()函数
pop(key[,default])函数 ,删除字典给定键 key 及对应的值,返回值为被删除的值,key必须写
key: 要删除的键值
default: 如果没有对应key值,返回default值,[]内为可选
popitem() 函数,随机删除字典中一对键和值。并返回该键值对。若字典为空,就报出 KeyError 异常。
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.popitem()
(1, 12)
>>> b.pop(7)
13
7) has_key() 函数,判断字典中是否存在某个键,等同于 "key in dict"
>>> b={1: 12, 7: 13, 3: 14, 4: None, 5: 16}
>>> b.has_key(1)
True
>>> 1 in b
True

浙公网安备 33010602011771号