字典是一种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的结构,并且是无序的散列表。查询速度比较快。