Python笔记之字典

    xiaoxiao2021-03-25  103

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

    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']}}

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

    转载请注明原文地址: https://ju.6miu.com/read-15136.html

    最新回复(0)