zoukankan      html  css  js  c++  java
  • 字典:python的基础数据类型

    字典

    简介

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。

    注意python3.5之前以及python3.5字典是无序的,而从python3.6开始,是有序的。

    Changed in version 3.7: Dictionary order is guaranteed to be insertion order. This behavior was implementation detail of CPython from 3.6.
    

    字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    操作

    dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}
    

    通过键值方式添加:有此键则更改对应的值,无此键则添加

    >>> dic['book'] = 'Python Cookbook'
    >>> dic
    {'book': 'Python Cookbook', 'author': ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages': 756}
    
    >>> dic['publish'] = '人民邮电出版社'
    >>> dic
    {'book': 'Python Cookbook', 'author': ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages': 756, 'publish': '人民邮电出版社'}
    

    通过setdefault添加:有此key则不做任何操作返回原key对应的值,无此key则添加并返回新key对应的值。

    >>> dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}
    >>> dic.setdefault('book', 'Python Cookbook')
    'python cookbook'
    
    >>> dic = {'book' : 'python cookbook', 'author' : ['Alex Martelli', 'Anna Martelli Ravenscrof', 'David Ascher'], 'pages' : 756}
    >>> dic.setdefault('publish','人民邮电出版社')
    '人民邮电出版社'
    

    pop:通过键来删除键值对,如果没有此键,并没设置第二个参数会报错,设置了第二参数不会报错。有返回值

    >>> dic.pop('book')
    'python cookbook'
    >>> dic.pop('book')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'book'
    >>> dic.pop('book', '没有此书')
    '没有此书'
    

    popitem:python3.5之前以及3.5会随机删除一个键值对,而3.6过后及3.6会删除最后一个键值对。返回所删除的键值对(元组)。

    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.popitem()
    (3, 'c')
    

    clear:清空字典

    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.clear()
    >>> dic
    {}
    

    del:删除指定的key的键值对,或者在内存中把该字典删除

    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> del dic[1]
    >>> dic
    {2: 'b', 3: 'c'}
    >>> del dic
    >>> dic
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'dic' is not defined
    

    通过 dic[key]=value 来改该键所对应的值

    # 已存在的key则改,不存在的则添加
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic['d'] = 4
    >>> dic
    {1: 'a', 2: 'b', 3: 'c', 'd': 4}
    >>> dic[1] = 100
    >>> dic
    {1: 100, 2: 'b', 3: 'c', 'd': 4}
    

    update(),参数为字典或"键值对"(键不带引号的)

    >>> dic.update({'d':4, 'e':5})
    >>> dic
    {1: 'a', 2: 'b', 3: 'c', 'd': 4, 'e': 5}
    >>> dic.update(aa=8)
    >>> dic
    {1: 'a', 2: 'b', 3: 'c', 'd': 4, 'e': 5, 'aa': 8}
    

    通过键来查询:

    dic[key],有此key则返回相应的值,无此key则报错。
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic[4]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 4
    >>> dic[2]
    'b'
    
    get(key[, default]):default=None,1、如果设置了 则在没有此key时会返回,没设置则返回None。2、有此key会返回对应的值,而不会返回default设置的值。
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.get(4, '没有此key')
    '没有此key'
    >>> dic.get(4)
    >>> dic.get(4) == None
    True
    >>> dic.get(1, '...')
    'a'
    

    通过dic的keys(), values(), items()来查询:返回的结果是类似于列表的元素。都可被list。

    keys()
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.keys()
    dict_keys([1, 2, 3])
    
    values()
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.values()
    dict_values(['a', 'b', 'c'])
    
    items()
    >>> dic = {1:'a', 2:'b', 3:'c'}
    >>> dic.items()
    dict_items([(1, 'a'), (2, 'b'), (3, 'c')])
    
  • 相关阅读:
    mysql 优化
    对象的特征
    对象的回收机制
    对象产生的过程
    python 内容查询小助手
    python笔记
    python安装MySQLdb模块
    python笔记
    python笔记
    定期删除备份文件,节省磁盘空间脚本
  • 原文地址:https://www.cnblogs.com/lanhoo/p/9508196.html
Copyright © 2011-2022 走看看