Python入门
  • Python入门
  • 0. 基础知识与安装
    • 0. 计算机基础知识
    • 1. Windows下安装
    • 2. 通过软件包管理器安装
    • 3. 通过源码安装
    • 4. 多版本管理
    • 5. Python的基础知识
    • 6. Python的内存管理
  • 1. 基本语法
  • 2. 内置数据结构
    • 1. 列表
    • 2. 元组
    • 3. 字符串
    • 4. bytes与bytearray
    • 5. 集合 (set)
    • 6. 字典
  • 3. 操作
    • 迭代与迭代器
    • 封装与解构
    • 解析式与生成器
    • 切片操作
    • del操作
  • 4. 函数
    • 1. 函数的定义与调用
    • 2. 函数的参数与参数解构
    • 3. 函数的返回值
    • 4. 函数的作用域
    • 5. 闭包
    • 6. 默认值的作用域
    • 7. 递归
  • 5. 高阶函数
    • 0. 柯里化
    • 1. 高阶函数
    • 2. 装饰器
    • 3. 参数注解
  • A. 内建函数
  • B. 算法
    • 1. 排序
      • 1.冒泡法排序
      • 2. 简单选择排序
      • 3. 二元选择排序
  • C. 模块
    • collections
    • copy
    • datetime
    • keyword
    • math
    • time
  • D. 习题
    • 九九乘法表
    • 打印菱形、三角形、闪电
    • 斐波那契数列
    • 求素数
    • 猴子吃桃
    • 杨辉三角
    • 转置矩阵
Powered by GitBook
On this page
  • 字典是什么
  • 字典的定义(初始化)
  • 字典的key与hash
  • 字典的增删查改
  • 通过key查找
  • 通过get查找
  • 通过setdefault设置
  • 通过key赋值
  • 通过update更新
  • pop操作
  • popitem操作
  • clear操作
  • 遍历操作
  • 字典遍历的总结
  • defaultdict与OrderedDict

Was this helpful?

  1. 2. 内置数据结构

6. 字典

字典是什么

字典(dict) 是一种key-value键值对的数据的集合,它是可变的、无序的、key去重的。

字典的定义(初始化)

#空字典
d1 = dict() 
d2 = {}
#非空字典
d3 = {'a':1}
d4 = {'a':1, 1:1, 2:None, 3:'abc', 4:[], (5,):56}
d5 = dict(a=1,b=2,c="abc")
#dict(mapping, **kwarg)
d6 = dict(d5, d=200, e=300) 
#dict(iterable, **kwarg) 二元解构的可迭代对象
d7 = dict([(1,100), (2,'abc')], d=200, e=300)) 
#dict.fromkeys(iterable,value)
d8 = dict.fromkeys(range(5))
d9 = dict.fromkeys("abcdefg", 0)

字典的key与hash

key的要求与set一致,set可以看作简化版dict。

只有可hash的元素才可以作为key,可以用hash() 测试。

字典的增删查改

通过key查找

d9[1]

通过get查找

d9.get(1,100) 

找不到返回缺省值,默认返回None ,如果有定义缺省值则返回缺省值。

通过setdefault设置

d9.setdefault("h",100)

如果找到则不设置缺省值,找不到添加到词典,默认使用None ,如果有定义缺省值则使用缺省值。

通过key赋值

d[key] = value

将key对应的值修改为value

key不存在则添加

通过update更新

dict.update(other)

返回None

key不存在就添加,存在的话就覆盖现有的值,就地修改。

pop操作

dict.pop(key,[default])

key存在:移除并返回指定键值对

如果定义了default:key不存在,返回default。

如果未定义default:key不存在返回异常。

popitem操作

dict.popitem()

随机移除并返回任意键值对,dict为空时返回异常。

clear操作

dict.clear()

清空字典。

遍历操作

for k in d2:
    print(k)

for k in d2.keys():
    print(k)

for v in d2.values():
    print(v)

for item in d2.items():
    print(item)

for item in d2.items():
    print(item[0],item[1])

for k,v in d2.items():
    print(k,v)

for k,_ in d2.items():
    print(k)

字典遍历的总结

Python3中,keys values items 返回的都是一个类似生成器的可迭代对象,不会把函数的返回结果复制到内存中

  • 返回Dictionary view对象,可以使用len() iter() in操作

  • 字典的entry的动态视图,字典变化,视图将反映出这些变化。

  • keys返回一个类set对象,也就是可以看作一个set集合。

  • 如果values都可以hash,那么items也可以看作是类set对象。

Python2中,上面的方法会返回一个新的列表,占据新的内存空间。所以建议使用iterkeys, itervalues, iteritems版本,返回一个迭代器,而不是一个copy。

Python3中,遍历过程中不能增删kv对。如果要删除,需要构建一个可迭代对象保存keys()。

defaultdict与OrderedDict

OrderdDict 仅在3.6之前有效

Previous5. 集合 (set)Next3. 操作

Last updated 6 years ago

Was this helpful?

参见

C. 模块/collections