Python笔记之字典

来源:互联网 发布:虚无世界2java路径 编辑:程序博客网 时间:2024/06/06 03:29

辛苦堆砌,转载请注明出处,谢谢!

Python的字典不是我们平时理解的生活中的字典,但是它有字典的作用,我们可以使用Python的字典进行检索,说白了,Python的字典就是一个类型,这个类型可以用来存放键值对,通过键我们可以得到对应的值,例如

>>> rect={'width':'200', 'height':'100'}
>>> rect['width']
'200'
>>> rect['height']
'100'


我们定义了一个字典,赋值给变量rect,表示一个矩形,宽为200,高为100,字典用{}包括,其内元素格式为key:value,也就是键值对。键一般为字符串或者整形,值可以是任何类型,例如

>>> {1:[1,2], 2:[1,2,3]}
{1: [1, 2], 2: [1, 2, 3]}


我们分别以1和2作为键,两个列表作为值,这样是可以的。


通过上面的介绍,我们了解了字典,但是有一点需要强调,字典与列表不同,字典是无序的,所以我们不能够进行任何有序的操作。


另外,字典也是Python的一个类,我们使用type命令可以看一个变量的类型,此时我们执行

>>> type(rect)
<class 'dict'>


可以看到,我们前面rect这个字典是一个dict类型。所以我们在IDLE输入help(dict)就可以查看字典的方法了,这里我们介绍一些,其他的可以在使用时查询。


keys()方法,以迭代器的方式返回一个字典的键值,你可以不知道什么是迭代器,只要知道迭代器我们可以用for进行遍历即可,下面的例子,我们用之前讲过的for循环遍历了rect的keys

>>> for key in rect.keys():
 print(key)

 
height
width


values()则是返回值的迭代器

>>> for value in rect.values():
 print(value)

 
100
200


items()返回的是条目的迭代器,条目以元组的方式返回

>>> for item in rect.items():
 print(item)

 
('height', '100')
('width', '200')


我们还可以使用之前提到的列表和元组赋值方式,分解上面的结果

>>> for key, value in rect.items():
 print('Key: ' + key + ' Value: ' + value)

 
Key: height Value: 100
Key: width Value: 200


我们可以用in和not in检查一个字典的键或值是否存在,检查键有两种方式

>>> 'color' in rect
False
>>> 'color' not in rect.keys()
True


检查值

>>> '200' in rect.values()
True
>>> '200' not in rect.values()
False


我们如果访问一个不存在的键会怎样?

>>> rect['color']
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    rect['color']
KeyError: 'color'


Python会报KeyError,所以,我们在访问一个键之前,最好使用in和not in对其进行检查,不过Python不会让我们这么麻烦,我们可以使用get方法,该方法在没有对应的键时候,我们可以指定默认值

>>> rect.get('color', 'red')
'red'


不过这样的get操作不会在rect中添加新的键和值,如果我们执行get之后再执行rect['color'],还是会报KeyError,Python还为我们提供了一个setdefault方法,这个方法和get类似,不过他会多做一项工作,在字典中为我们创建对应的键值对

>>> rect.setdefault('color', 'red')
'red'
>>> rect['color']
'red'
>>> rect
{'height': '100', 'color': 'red', 'width': '200'}


以上就是dict基本的内容了,可以看到,字典并不复杂,但是却给我们提供了相当方便和自然的操作和结构,利用之前提到的列表和字典我们可以构造相当复杂的结构,例如我们构造自己的书单

>>> {'开发类':
{'Linux':['lbook1', 'lbook2'],

'Windows':['wbook1', 'wbook2']},
'编程语言类':
{'C语言':['cbook1', 'cbook2'],

'Java':['jbook1', 'jbook2'],

'Python':['pbook1', 'pbook2']}
}
{'开发类': {'Windows': ['wbook1', 'wbook2'], 'Linux': ['lbook1', 'lbook2']}, '编程语言类': {'Java': ['jbook1', 'jbook2'], 'Python': ['pbook1', 'pbook2'], 'C语言': ['cbook1', 'cbook2']}}

可以分解一下上面的结构,字典的值还可以是字典,就是这么神奇。

0 0
原创粉丝点击