字典
前面曾经说过的访问模型:直接存取,序列,映射。字典就是一种映射模式(mapping
type)。
一个字典对象是可变的,他是一个容器类型,能存
储任意个Python对象,也包括其他容器类型。字典类型和序列类型的容器类的区别是存储和访问数据的方式不同。序列只用数字类型的键(从序列的开始按数
字顺序索引)。而字典这种映射类型可以用其他类型做键,一般最常用的是字符串做键(keys)。
创建字典:一个字典条目的语法格式是 键:值,多条字典条目包含在{}内。
>>> dict1 = {‘name’:’earth’,’port’:80}
>>> dict1
{‘name’: ‘earth’, ‘port’: 80}
>>>
也可以先建一个空的字典,然后再往里面加元素:
>>> d = {}
>>> d[‘name’] = ‘Gumby’
>>> d[‘age’] = 42
>>> d
{‘age’: 42, ‘name’: ‘Gumby’}
>>>
也可以用dict()创建
>>> fdict = dict(([‘x’,1],[‘y’,2]))
>>> fdict
{‘y’: 2, ‘x’: 1}
>>>
下面看如何访问字典中的元素:
>>> dict2 = {‘name’:’earth’,’port’:80}
>>> for key in dict2.keys():
print ‘key=%s,value=%s’ %(key,dict2[key])
key=name,value=earth
key=port,value=80
>>> for key in dict2:
print ‘key=%s,value=%s’ %(key,dict2[key])
key=name,value=earth
key=port,value=80
>>> dict2[‘name’]
‘earth’
>>> print ‘host %s is running on port %d’ %
(dict2[‘name’],dict2[‘port’])
host earth is running on port 80
>>>
如何更新字典:
添加一个新数据项(即一个键-值对)
>>> dict2 = {‘name’:’earth’,’port’:80}
>>> dict2
{‘name’: ‘earth’, ‘port’: 80}
>>> dict2[‘name’] = ‘venus’
>>> dict2[‘port’] = 6969
>>> dict2[‘IP’] = ‘10.1.14.84’
>>> dict2
{‘IP’: ‘10.1.14.84’, ‘name’: ‘venus’, ‘port’: 6969}
>>>
实现了更新原有的和添加新的键-值对。
删除字典元素和字典:
>>> dict2
{‘IP’: ‘10.1.14.84’, ‘name’: ‘venus’, ‘port’: 6969}
>>> del dict2[‘name’]
>>> dict2
{‘IP’: ‘10.1.14.84’, ‘port’: 6969}
>>> del dict2
>>> dict2
Traceback (most recent call last):
File “”, line 1, in
dict2
NameError: name ‘dict2’ is not defined
>>>
如果想只清空字典,而不是销毁字典,可用clear()
>>>dict2.clear()
>>>dict2
{}
>>>
另外字典还有好多内置的函数:
>>> dir(dict)
[‘__class__’, ‘__cmp__’, ‘__contains__’, ‘__delattr__’,
‘__delitem__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’,
‘__getattribute__’, ‘__getitem__’, ‘__gt__’, ‘__hash__’,
‘__init__’, ‘__iter__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__ne__’,
‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’,
‘__setattr__’, ‘__setitem__’, ‘__sizeof__’, ‘__str__’,
‘__subclasshook__’, ‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘has_key’,
‘items’, ‘iteritems’, ‘iterkeys’, ‘itervalues’, ‘keys’, ‘pop’,
‘popitem’, ‘setdefault’, ‘update’, ‘values’]
>>>