Python容器篇 4 -- 字典

字典python

dict = {key1:value1, key2:value2, ...}编程

定义一个空字典编程语言

  1. em_dict = dict()
  2. em_dict = {}

字典的特性优化

  • 可能存在多个相同的value(可重复), 可是key绝对是惟一存在的!
  • 字典不支持下标/索引和切片, 字典是经过key(键)来访问的

查找字典数据code

  1. dict[key]
    • 这种访问方式, 若是key不存在, 会直接报错
  2. dict.get(key)
    • 这种方式, 若是key不存在, 不会报错, 而是返回 None
  3. dict.get(key, default)
    • 这种方式更细致, 若是key不存在, 不会返回 None, 而是返回默认值 default

修改和添加字典数据索引

  1. dict[key] = value
    • 若是key存在, 作修改操做
    • 若是key不存在, 在末尾作添加操做
  2. dict.update({key:value, ...})
    • 这种方法是用字典型的数据去作添加修改操做
    • 若是key存在, 作修改操做
    • 若是key不存在, 在末尾作添加操做

删除字典数据字符串

  1. 删除指定元素(键值对)
    • del dict[key]
    • dict.pop(key)
  2. 删除整个字典
    • del dict
    • dict.clear()

字典的长度get

  • 长度就是键值对的个数
  • len(dict)

返回包含字典中全部key值的一个列表it

  • dict.keys()

返回包含字典中全部value值的一个列表io

  • dict.values()

返回包含字典中全部键值对元组的一个列表

  • 列表中的元素形如 (key, value)
  • dict.items()

遍历字典

  1. 直接遍历(也就至关于只遍历key值)
    • for key in dict:
  2. 遍历字典的key值
    • for key in dict.keys():
  3. 遍历字典的value值
    • for value in dict.values():
  4. 遍历字典中的的元素(键值对)
    • for item in dict.items():
    • 必定要注意了, 此处返回值是元组类型的 (key, value)
  5. 遍历字典中的key,value键值对:
    • for key, value in dict.items():
    • 注意, 此处至关于一个元组的拆包操做, 把(key, value)拆出来给key和value变量

关于有序字典和无序字典

既然字典没有下标去定位顺序, 那么天然有个疑问, 字典中的元素是有序地存放着的吗??

其实字典这个容器分为有序字典和无序字典, 在Python3.6版本以后, 咱们建立的dict默认就是有序字典

而在3.6版本以前, 咱们建立的dict则默认是无序字典, 无序字典的特色是:每次访问, 字典中元素的顺序是随机的!

那么问题来了, 若是想在3.6以前的版本环境下建立一个有序字典怎么办呢??

from collections import OrderedDict
my_dict = OrderedDict()  # 建立一个有序字典

可是即便3.6版本后的字典中元素是默认有序的存放的, 可是, 注意可是, 字典这种类型的容器在归类上是属于无序的数据类型的!!!

那么, 这个数据类型的有序和无序是怎么看的呢?

主要仍是看能不能用下标索引出来,
好比: 字符串, 元组 和 列表 这仨就是有序数据类型
而: 字典 和 集合 这俩就是无序的

也能够这么理解, 字典这种数据类型在绝大多数编程语言中都是无序的; 只不过python3.6版本后作了个数据类型的小优化, 让字典内部的元素有序地进行存放; 可是这并没有法改变字典这种数据类型的本质, 综上所述字典是一种无序数据类型!

相关文章
相关标签/搜索