• day15 集合与字典


    一、字典(dict)
     
      1. 概述
     
      字典是Python唯一的映射类型。
     
      只能使用不可变的对象(比如字符串)来作为字典的键,但是可以把不可变或可变的对象作为字典的值。
     
      键值对在字典中以这样的方式标记:d = key1 : value1, key2 : value2 。注意它们的键/值对用冒号分割,而各个对用逗号分割,
     
        所有这些都包括在花括号中。
     
      字典中的键/值对是没有顺序的。
     
      字典是 dict 类的实例/对象。
     
      2. 创建与访问
     
      直接通过花括号括起来键/值对来创建。可以这样来创建空字典。字典可以索引,只不过索引值是键值。
     
      利用内置函数 dict() 来创建字典,注意整个函数只有一个参数,如下:
     
      dict3 = dict((('F',70), ('i',105), ('h',115), ('c',67))),只要能让它找到映射关系就OK。
     
      还可以指定关键字参数来创建字典:
     
      dict4 = dict(Turing = '让编程改变世界'),注意此时键即 Turing 不能加引号,会报错。
     
      对于字典还可以通过键来修改值,如果存在这个键,就会修改其值,如果根本不存在这个键,就会再添加一个键/值对。如:
     
      dict4[‘ Turing ’] = ‘ 大家一起来编程’
     
      dict4[' Edison '] = ' 大发明家'
     
      >>>dict4
     
      {'Turing': '大家一起来编程', 'Edison': '大发明家'}。
     
      3. 字典的内置方法
     
      1) fromkeys()
     
      >>> dict1 = {}
     
      >>> dict1.fromkeys((1,2,3))
     
      {1: None, 2: None, 3: None}
      >>> dict1.fromkeys((1,2,3), 'Number')
      {1: 'Number', 2: 'Number', 3: 'Number'}
      >>> dict1.fromkeys((1,2,3),('one','two','three'))
      {1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
     
      >>>dict1.fromkeys((1,3),'数字')
     
      {1: '数字', 3: '数字'}
     
      fromkeys方法用来创建一个字典,有两个参数,一个是键,一个是值。注意第二个参数都会赋给所有的键,没有聪明的一一对应。
     
      没有办法通过这个办法修改键的值,强制修改的话会创建一个新的字典。
     
      2)keys() values() items()
     
      分别遍历键、值、项。
     
      3)get()
     
      当索引并不是字典中的键时,访问输出时会出错,用get()方法可以巧妙的解决这个问题。
     
      >>> print(dict2[31])
     
      赞
      >>> print(dict2[32])
      Traceback (most recent call last):
      File "<pyshell#17>", line 1, in <module>
      print(dict2[32])
      KeyError: 32
      >>> dict2.get(32)
      >>> print(dict2.get(32))
      None
      >>> dict2.get(32,'木有')
      '木有'
      >>> dict2.get(31,'木有')
      '赞'
     
      4)clear()
     
      清空字典。如果直接把想要清空的字典赋给空字典,和clear()方法还是有很多不同的,有时候可能有威胁,还是使用clear()方法。
     
      >>> dict2.clear()
     
      >>> dict2
      {}
      >>> dict2 = {}
      >>> a = {'你好': '哈哈'}
      >>> b = a
      >>> b
      {'你好': '哈哈'}
      >>> a = {}
      >>> b
      {'你好': '哈哈'}
      >>> a = b
      >>> a
      {'你好': '哈哈'}
      >>> b
      {'你好': '哈哈'}
      >>> a.clear()
      >>> a
      {}
      >>> b
     
      {}
     
      5)copy()
     
      浅拷贝,和赋值操作的不同看代码:
     
     
      >>> a = {1:'one',2:'two',3:'three'}
      >>> b = a.copy()
      >>> c = a
      >>> c
      {1: 'one', 2: 'two', 3: 'three'}
      >>> a
      {1: 'one', 2: 'two', 3: 'three'}
      >>> b
      {1: 'one', 2: 'two', 3: 'three'}
      >>> id(a)
      57877832
      >>> id(b)
      57838536
      >>> id(c)
      57877832
     
      6) pop() 与 popitem()
     
      一个是弹出值,一个是弹出项,后者是随机弹出的。
     
     
      >>> a.pop(2)
      'two'
      >>> a
      {1: 'one', 3: 'three'}
      >>> a.popitem()
      (1, 'one')
     
      7) setdefault()
     
      添加键或添加键/值对。如:
     
      (注:添加后的顺序随机)
     
      >>> a.setdefault('sq')
      >>> a
      {'sq': None, 3: 'three'}
      >>> a.setdefault(5,'five')
      >>> a
      {3: 'three', 5: 'five', 'sq': None}
     
       update()
      用字典来更新字典,如果参数字典中的键原字典有就更新其值,没有就自动添加上去新键。
    二、集合(set)
     
      1. 概述
      集合是字典的“表亲”,花括号不只是字典的特权。当用花括号括起来一堆没有映射关系的元素时就创建了一个集合。
      >>> num2 = {1, 2, 3, 4}
      >>> type(num2)
      <class 'set'>
      2. 和数学中的概念一样,集合具有互异性,无序性(因此集合无法用于索引)。
     
      >>> num= {1, 2, 3, 4, 6, 3, 2}
      >>> num
      {1, 2, 3, 4, 6}
      >>> num[2]
      Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
      num[2]
      TypeError: 'set' object does not support indexing
     
      3. 内置工厂函数 set() 可以用来创建集合,参数可以是列表,元组,甚至是字符串。
     
      >>> set1 = set([1,2,3, 4,5])
      >>> set1
      {1, 2, 3, 4, 5}
      4. 因为集合的互异性,反而给序列中去除相同的元素提供了一个巧妙的方法。
      list2 = list(set(list1))
      缺点是无法保证和原序列同样的顺序,慎用。
      5. 集合的内置方法 add() remove()
      创建不可变集合的函数 frozenset().
      6. 其他常见集合内建方法总结
  • 相关阅读:
    OpenGL红宝书:第一个渲染程序Triangles常见问题归总
    OpenGL绘制简单的参数曲线(完)——三次B样条曲线
    OpenGL绘制简单的参数曲线(二)——三次Bezier曲线
    OpenGL绘制简单的参数曲线(一)——三次Hermite曲线
    xcode:读取txt文件
    mac opengl 画一个三角形
    glVertexAttribPointer
    glEnableVertexAttribArray 使用
    macOS下基于GLFW+GLAD的OpenGL环境配置
    php 执行 shell 命令转义字符
  • 原文地址:https://www.cnblogs.com/lizhaoyu/p/7049053.html
Copyright © 2020-2023  润新知