目录
  1. 1. 字典:当索引不好用时
    1. 1.1. 创建方法
    2. 1.2. 访问方法
    3. 1.3. 内置方法
      1. 1.3.1. fromkeys(seq[, value])
      2. 1.3.2. keys(),values(),items()
      3. 1.3.3. get(key[, default])
      4. 1.3.4. clear()
      5. 1.3.5. copy()
      6. 1.3.6. pop(ket[, default]) 和 popitem()
      7. 1.3.7. setdefault(key[, default])
      8. 1.3.8. update([other])
  2. 2. 集合:你就是我的唯一
    1. 2.1. 创建集合
    2. 2.2. 访问集合
    3. 2.3. 不可变集合
Python字典和集合

字典:当索引不好用时

字典类似于Java中的Map,就是建立两个列表间的映射(key-value)。
使用 大括号{} 定义,由 “键”“值” 共同构成,每一对键值组合称为 “项”

  • 字典中的键独一无二,且必须不可变类型
  • 值可重复,可以取任意值
  • 字典不支持拼接和重复操作的,因为键独一无二

创建方法

  1. 直接使用 大括号{} ,如dict1
  2. 使用 dict() 内置函数创建
    • 键值对要打包成元组送入,因为 dict()只接受一个序列,如dict2
    • 通过提供具有映射关系的参数建立,键的位置不能加上引号,如dict3
1
2
3
dict1 = {'L': 1, 'O': 2, 'V': 3, 'E': 4}
dict2 = dict((('L', 1), ('O', 2), ('V', 3), ('E',4)))
dict3 = dict(L = 1, O = 2, V = 3, E = 4)

访问方法

访问字典里的值与访问序列雷子,只需要把相应的键放入 方括号[] 即可

  • 如果键不存在,则抛出KeyError
  • 如果是一个赋值语句,则覆盖或者新建键值对

内置方法

fromkeys(seq[, value])

fromkeys()方法用于新建并返回一个新的字典,它有两个参数:

  • 第一个参数是字典的键;
  • 第二个是可选的,传入所有键对应的值,如果没有传入,则默认None
    • 如果第二参数传入的是序列,也会被当成一个Value赋给所有的key

keys(),values(),items()

  • keys()返回字典中所有的键 <class ‘dict_keys’>
  • values()返回字典中所有的值 <class ‘dict_values’>
  • items()返回字典中所有的键值对 <class ‘dict_items’>

get(key[, default])

get() 提供了更宽松的方法访问字典,当键不存在时,不会报错,而是返回None

  • 第二个参数用于设置键不存在时返回的值,默认None,因此默认返回None
  • 可以用成员资格操作符 innot in 来判断键是否存在

clear()

clear() 用于清空词典

copy()

copy() 方法用于拷贝(浅拷贝)整个字典

  • 在这里,浅拷贝的含义是,字典是不同字典,但是里面的键,值为同一内存区域

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> dict1 = {1:[1,2,3]}
    >>> dict2 = dict1.copy()

    # 字典已经不同
    >>> id(dict1) == id(dict2)
    False

    # 但是子对象相同
    >>> id(dict1[1]) == id(dict2[1])
    True
  • 扩展学习:

    • 直接赋值:对象的引用(别名)
    • 浅拷贝:copy,拷贝父对象,子对象还是引用
    • 深拷贝:deepcopy,完全拷贝,父子对象都拷贝

pop(ket[, default]) 和 popitem()

  • pop()是给定键弹出对应的值
  • popitem()弹出最后一个项
  • 这里的弹出是返回并删除

setdefault(key[, default])

setdefault() 与 get() 类似,但是,setdefault() 在字典中找不到键时会自动添加

  • 第二个参数是不仅是返回值,还是新建键值对的值

update([other])

update() 方法用于更新字典,将键对应的值更新

  • 此功能与新建键值对的覆盖类似

集合:你就是我的唯一

与Java中的Set相同,Python中的集合(set)的特点是:唯一,无序,与字典相同使用 大括号{},但是没有映射关系

创建集合

  1. 直接把一大堆元素用 大括号{} 括起来
    • 但是如果要建立空集合,这样子做会被Python认为是字典
  2. set() 内置函数,传入可迭代对象
1
2
3
4
>>> set1 = {1,2,3,4}
>>> set2 = set([1,2,3,4])
>>> set1 == set2
True
  • 如果创建中的元素有重复,会只留下一个

访问集合

因为集合是无序的,因此不能使用下标访问,只能用迭代把集合中的数据一个个读取出来

  • 可以用 innot in,判断一个元素是否存在
  • 可以使用add(),remove()内置方法增删元素

不可变集合

不可变集合(frozenset)中的元素只能访问,不能修改

  • 使用 frozenset() 函数创建不可变集合,传入可迭代对象,返回为<class ‘frozenset’>
文章作者: EasonZzZz
文章链接: http://yoursite.com/2020/02/05/学习/Python学习/Python字典和集合/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Nice To Meet U