一 字典https://www.cnblogs.com/linupython/p/5880280.html
1 概念/特点
- 字典是另一种可变容器模型,且可存储任意类型对象。
- 字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的,可哈希表示键值不可变。
总结:
- 字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
- 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
2 定义:字典可通过一对花括号来定义,元素内部通过冒号来连接key和对应的value,元素与元素之间通过逗号隔开,可进行自由嵌套。
3 语法格式:d = {key1 : value1, key2 : value2 }
4 字典的相关操作
- 创建
- 通过定义字典的过程创建 。 dict = {‘a‘:1,‘b‘:2,‘c‘:3}
- dict()函数:也可以创建字典
- 注意:在使用dict函数之前先把原来定义的dict字典给删了,用‘del dict‘命令,否则系统会报错:TypeError: ‘dict‘ object is not callable
- 通过元组定义:dict1 = dict(((‘F‘,70),(‘i‘,105),(‘s‘,115),(‘h‘,104),(‘C‘,67)))
- 访问:通过在方括号内引用其键名来访问字典的元素。 print(dict[‘c‘])
- 修改:
- 更改已有键值对的值:通过引用其键名来更改特定项的值。dict[‘a‘] = 0
- 增加新的键值对:通过引用要添加的‘key‘并给该‘key‘赋值来添加新的键值对: dict[‘d‘]=4
- 删除:字典长度:获取字典的长度(键值对的个数),通过len方法实现。 len(dict)
- del语句:
- 删除整个字典。del dict
- 删除字典中的某个键值对。del dict[‘a‘]
- clear()方法:清空字典所有键值对,不需要参数。dict.clear()
- pop()方法:删除字典的某一键值对,其参数直接是键值key,不需要通过字典名称引用。dict.pop(‘c‘)
- popitem() 方法:删除最后插入的项目(在 3.7 之前的版本中,删除随机项目)。 dict.popitem()
- 字典排序:通过sorted方法对所有的key进行排序并以列表形式返回。 sorted(dict)
- 字典类型: 可用type函数查看字典中某一键值对的值的类型。type(dict[‘a‘])
- 检查键值是否存在:要确定字典中是否存在指定的键,可使用 in 关键字。
-
1 >>> if ‘a‘ in dict:
2 ... print("True")
- 遍历字典:可以使用 for 循环遍历字典,循环遍历字典时,返回值是字典的键,但也有返回值的方法。
- 逐个打印字典中的所有键名:
-
1 >>> for x in dict:
2 ... print(x)
- 逐个打印字典中的所有值:
-
1 >>> for x in dict:
2 ... print(dict[x])
- 还可以使用 values() 函数返回字典的值
-
1 >>> for x in dict.values():
2 ... print(x)
- 通过使用 items() 函数遍历键和值
-
>>> for x,y in dict.items():
... print(x,y)
5 字典的常用内置方法
二 课后习题
测试题部分
0. 当你听到小伙伴们在谈论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢?
答:是的,事实上他们就是在讨论我们这一讲介绍的“字典”,都是一个概念!
1. 尝试一下将数据(‘F‘: 70, ‘C‘: 67, ‘h‘: 104, ‘i‘: 105, ‘s‘: 115)创建为一个字典并访问键 ‘C‘ 对应的值?
1 >>> MyDict = dict(((‘F‘, 70), (‘i‘,105), (‘s‘,115), (‘h‘,104), (‘C‘,67)))
2 >>> MyDict_2 = {‘F‘:70, ‘i‘:105, ‘s‘:115, ‘h‘:104, ‘C‘:67}
3 >>> type(MyDict)
4 <class ‘dict‘>
5 >>> type(MyDict_2)
6 <class ‘dict‘>
7 >>> MyDict[‘C‘]
8 67
第25讲:字典:当索引不好用时
原文:https://www.cnblogs.com/luoxun/p/13356547.html