zoukankan      html  css  js  c++  java
  • Learning Python 009 dict(字典)和 set

    Python dict(字典)和 set

    dict (字典)是什么东西

    dict全称dictionary。为什么这个数据结构取名叫dict。因为dict的实现原理和查字典是一样的。dict使用了键-值(key-value)存储的方式。就好比在字典里查某个字一样。dict数据结构中的(key)就好比字典中的索引表里这个字对应的页码。(value)就好比字典中这个字的内容。这样的特点,效果就是查找速度极快。

    例如:一个人“名字”-“成绩”的对照表,直接根据名字查找成绩:

    定义dict字典

    >>> d = {'Aobo': 59, 'Shutong': 98, 'Yunjie': 86}
    >>> d['Aobo']
    59

    dict中,添加元素

    >>> d['Yue'] = 67
    >>> d['Yue']
    67

    修改dict中,某个key)的value

    >>> d['Aobo'] = 88
    >>> d['Aobo']
    88

    判断 key)是否存在于这个dict字典)中

    如果,key不存在,会报错。比如:

    >>> d['Harry']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'Harry'

    避免出现这样的报错的方法有:
    1. 使用in判断key是否存在:

    >>> 'Harry' in d
    False
    1. 使用dict提供的get方法,来检查key是否存在,如果不存在,返回None,或者自己指定的value
    >>> d.get('Harry')
    >>> d.get('Harry', -1)
    -1

    注意:
    返回None的时候,在终端上的Python交互式命令行不显示结果。

    删除dict中,指定元素

    使用pop(key)方法,就可以将对应的key-valuedict中删除:

    >>> d.pop('Aobo')
    88
    >>> d
    {'Shutong': 98, 'Yunjie': 86, 'Yue': 67}

    使用dict,你需要注意的事情

    特点是比较出来的,所以,和list比较,dict有几个特点
    1. 速度快。无论是查找还是插入,速度都极快,并且不会随着key的增加而变慢。
    2. 需要占用大量的内存,内存浪费多。

    那么,list的特点就是:
    1. 查找和插入的时间随着元素的增加而增加;
    2. 占用空间小,浪费内存很少。

    注意:key的值是不可变的。
    字符串、整数等都是不可变的,可以放心地作为key。而list是可变的,就不能作为key。

    set

    介绍

    dict数据结构类似,只是它只有key,没有value

    定义一个set数据结构

    使用set()函数定义set数据结构。在()里面添加一个list数据([]):

    >>> s = set([1, 2, 3])
    >>> s
    {1, 2, 3}
    >>> s = set([1, 1, 2, 2, 3, 3])
    >>> s
    {1, 2, 3}

    注意:
    set会自动将重复的元素过滤掉。所以,在set中,没有重复的key

    set数据类型中,添加元素

    使用add()方法,添加元素。

    >>> s.add(4)
    >>> s
    {1, 2, 3, 4}

    可以添加重复的key,但是不会有效果:

    >>> s.add(3)
    >>> s
    {1, 2, 3, 4}

    set数据类型中,删除指定key的元素

    使用remove()方法,可以删除元素:

    >>> s.remove(4)
    >>> s
    {1, 2, 3}

    set数据,进行交集和并集等操作

    >>> s1 = set([1, 2, 3])
    >>> s2 = set([2, 3, 4])
    >>> s1 & s2
    {2, 3}
    >>> s1 | s2
    {1, 2, 3, 4}

    使用set,需要注意的事情

    setdict之间唯一的区别就是,set没有存储对应的value


    参考网站:
    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143167793538255adf33371774853a0ef943280573f4d000

  • 相关阅读:
    分表分库-------shading jdbc使用
    字符串之特殊符号处理
    【汇编程序】编程将100到200中的奇数求和,结果送到SUM字单元
    【汇编程序】从键盘输入一个大写字母,将其转换成小写字母
    【汇编程序】统计非数字的个数
    【读书笔记】看过的书籍列表整理
    【微机原理】数字电路器件—门 与门 或门 非门电路及实例
    【c语言】递归题
    【汇编程序】BUF为首址的100个字节单元用原码表示的有符号数依次编程用补码表示的有符号数
    【汇编程序】编写一个完整的程序 将这3个数的最大者存放到MAX单元
  • 原文地址:https://www.cnblogs.com/aobosir/p/5928639.html
Copyright © 2011-2022 走看看