字典类似Java中的Map,字典中的键可以是数字、字符串甚至是元组。
创建和使用字典
>>> people = {'jack':34,'rose':25,'jack':36}
>>> people
{'rose': 25, 'jack': 36}
上面就是创建字典的方法,注意,字典中键是唯一的,我输入了两个’jack’,结果取的是后面输入的’jack’。
dict函数
也可以使用dict函数,通过其他映射(字典)或者(键,值)对的序列建立字典
>>> items = [('name','jack'),('age',24)]
>>> d = dict(items)
>>> d
{'age': 24, 'name': 'jack'}
>>> d['name']
'jack'
也可以通过关键字参数来创建字典:
>>> d = dict(name='rose',age=43)
>>> d
{'age': 43, 'name': 'rose'}
字典的基本操作
字典的基本操作很多方面与序列类似:
- len(d) 返回d中项(键值对)的数量
- d[k]返回k对应的值
>>> d
{'age': 43, 'name': 'rose'}
>>> d['age']
43
>>> d['a']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'a'
如果输入不存在的键,会报错。
- d[k]=v将值v关联到键k上
>>> d['a'] = 1
>>> d
{'a': 1, 'age': 43, 'name': 'rose'}
可以关联一个不存在的键,那么就是添加一个新的键值对。如果关联已存在的键,则是覆盖。
- del d[k]删除键为k的项
- k in d检查d是否含有键为k的项
键可以是任意不可变类型
字典的格式化字符串
可以在%后面加上键:
>>> people
{'rose': 25, 'jack': 36}
>>> " rose's age is %(rose)s" % people #%(rose)s 在%s中间加入了(rose)
" rose's age is 25"
字典方法
- fromkeys
使用给定的键建立新的字典,每个键对应的值默认为None,也可以指定:
>>> {}.fromkeys(('name','age'))
{'age': None, 'name': None}
>>> {}.fromkeys(('name','age'),'unknown')#指定'unknown'
{'age': 'unknown', 'name': 'unknown'}
- get
get访问字典中不存在的项时不会出错,并返回None。
>>> people
{'rose': 25, 'jack': 36}
>>> print people.get('a')
None
>>> people.get('rose')
25
还可以自定义默认值:
>>> people.get('a',10)
10
- items和iteritems
items
方法将字典的所有项以列表的方式返回:
>>> people.items()
[('rose', 25), ('jack', 36)]
iteritems
方法返回一个迭代器对象:
>>> it = people.iteritems()
>>> it
<dictionary-itemiterator object at 0x1baa7e0>
>>> list(it) #将迭代器转换为list
[('rose', 25), ('jack', 36)]
pop
获取给定键的值,并将这项从字典中移除update
可以用一个字典项更新另外一个字典:
>>> people
{'rose': 25, 'jack': 36}
>>> x = {'jack':24}
>>> people.update(x)
>>> people
{'rose': 25, 'jack': 24}
x中如果有people中不存在的项,也会更新进去:
>>> people
{'rose': 25, 'jack': 24}
>>> x = {'jack':21,'cherry':20}
>>> people.update(x)
>>> people
{'rose': 25, 'jack': 21, 'cherry': 20}