共计 2373 个字符,预计需要花费 6 分钟才能阅读完成。
字典是一种 key-value 格式的数据,表示形式是 {}。比较一下列表、元组、字典的区别.
- 列表 list = [1,2,3]
- 元组 tuples = (1,2,3)
- 字典 dict = {"张三":23,"李四":40}
定义一个字典
dict = {"name":'liuser',"age":"24"} // 定义一个字典
dict = dict{"name":'liuser',"age":"24"}; // 使用 dict 定义一个字典
将两个列表合并成为一个字典
>>> code_list // 定义一个列表
['c++', 'php']
>>> code_number = [1000,2000] // 定义另一个列表
>>> dict(zip(code_list,code_number)) // 合并两个列表为字典,前面的列表为 key,后面的列表为 value
{'php': 2000, 'c++': 1000} // 输出字典内容
>>>
访问字典
>>> d['php'] // 通过 key 来访问,很像 php 的二维数组和 json
2000
>>>
字典常用函数
- 获取字典所有 key keys
>>> d.keys()
['php', 'c++']
>>>
- 获取字典所有 value values
>>> d.values()
[2000, 1000]
>>>
- 返回字典中所有项 items
>>> d.items()
[('php', 2000), ('c++', 1000)] // d 中,一共有两个元素,一个是 php,一个是 c ++, 也就是遍历字典后的列表
>>>
- 获取元素 get
get 还能防止访问未知 key 引起的异常
>>> d
{'php': 2000, 'c++': 1000}
>>> d['python'] // 访问一个不存在的 key,将会返回一个错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'python'
使用 get 可以避免这一事件
>>> d
{'php': 2000, 'c++': 1000}
>>> d.get('python') // 不会返回任何信息,使用 type 去检测类型,结果为 NoneType
get 可以有第二个参数,如果第二个参数存在,则在没有找到匹配的 key 后返回第二个参数
>>> d
{'php': 2000, 'c++': 1000}
>>> d.get('python','nooooo') // 第二个参数存在,则在没有匹配到 key 后返回第二个参数
'nooooo'
- 插入新元素 update
>>> d
{'php': 2000, 'c++': 1000}
>>> d.update({"python":3000}) // 追加 {"python":3000}
>>> d
{'python': 3000, 'php': 2000, 'c++': 1000}
- 删除元素 del
>>> d
{'python': 3000, 'php': 2000, 'c++': 1000}
>>> del(d['c++']) // 通过 del 函数删除一个字典元素,注意,此处的操作不是 dict.del
>>> d
{'python': 3000, 'php': 2000}
- 清空字典 clear
>>> d
{'python': 3000, 'php': 2000}
>>> d.clear() // 将字典元素全部清空
>>> d
{}
>>>
字典的一些操作
- 引用, 引用和列表格式差不多,通过 = 符号赋值给其他变量
>>> d
{'php': 2000, 'c++': 1000}
>>> e = d // e 引用 d
>>> e
{'php': 2000, 'c++': 1000}
>>> id(d)
4310255328
>>> id(e) // 两处 id 值相同
4310255328
>>>
- 拷贝, 拷贝不同于列表,需要用到 copy 函数
// 首先,先回顾一下,列表是如何进行拷贝
list = [1,2,3]
list_copy = list[:] //list 的拷贝
// 字典的浅拷贝
>>> dict = {"name":"liuser","age":'24'}
>>> dict_copy = dict.copy() // 进行浅拷贝
>>> dict
{'age': '24', 'name': 'liuser'}
>>> dict_copy
{'age': '24', 'name': 'liuser'}
>>> id(dict)
4310254768
>>> id(dict_copy) // 两个 id 数值已经是不一样了。4310255048
>>>
// 深拷贝,浅拷贝只能拷贝字典的一层,如果字典中有嵌套其他的列表,则需要用到深拷贝(完全拷贝)>>> import copy // 需要引入 copy 库
>>> deep_copy = copy.deepcopy(d) // 深度拷贝
>>> deep_copy
{'php': 2000, 'c++': 1000}
>>> id(deep_copy)
4310208136
>>> id(d)
4310255328
排序 , 通过 sorted 函数
>>> d = {"php":1000,"c++":2000,'python':3000}
>>> d
{'python': 3000, 'php': 1000, 'c++': 2000}
>>> [(k,d[k]) for k in sorted(d.keys())] // 这里排序的是 key 值
[('c++', 2000), ('php', 1000), ('python', 3000)]
#字典是散列表,没有顺序,所以在进行排序后,格式就变为了 list。>>> l = [(k,d[k]) for k in sorted(d.keys())]
>>> type(l)
<type 'list'>
>>>
>>>
总结:
字典是一个相当强大的数据结构,类似于我们使用的 json,本节重点介绍了一些字典的基本操作和函数,包括创建、修改、删除、添加。拷贝和引用。还有获取字典的所有 key 和 value。字典相对于列表来讲,字典是 key-value 的结构,并且是无序的散列表。查询速度比较快。
正文完