Menu Close

python2 学习笔记之 字典

字典是一种key-value格式的数据,表示形式是{}。比较一下列表、元组、字典的区别.

  1. 列表 list = [1,2,3]
  2. 元组 tuples = (1,2,3)
  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
>>> 

字典常用函数

  1. 获取字典所有key keys
>>> d.keys()
['php', 'c++']
>>> 
  1. 获取字典所有value values
>>> d.values()
[2000, 1000]
>>> 
  1. 返回字典中所有项 items
>>> d.items()
[('php', 2000), ('c++', 1000)] //d中,一共有两个元素,一个是php,一个是c++,也就是遍历字典后的列表
>>> 
  1. 获取元素 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'
  1. 插入新元素 update
>>> d
{'php': 2000, 'c++': 1000}
>>> d.update({"python":3000}) //追加 {"python":3000}
>>> d
{'python': 3000, 'php': 2000, 'c++': 1000}
  1. 删除元素 del
>>> d
{'python': 3000, 'php': 2000, 'c++': 1000}
>>> del(d['c++'])  //通过del函数删除一个字典元素,注意,此处的操作不是dict.del
>>> d
{'python': 3000, 'php': 2000}
  1. 清空字典 clear
>>> d
{'python': 3000, 'php': 2000}
>>> d.clear()  //将字典元素全部清空
>>> d
{}
>>> 

字典的一些操作

  1. 引用,引用和列表格式差不多,通过=符号赋值给其他变量
>>> d
{'php': 2000, 'c++': 1000}
>>> e = d  //e引用d
>>> e
{'php': 2000, 'c++': 1000}
>>> id(d)
4310255328
>>> id(e)  //两处id值相同
4310255328
>>>
  1. 拷贝,拷贝不同于列表,需要用到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的结构,并且是无序的散列表。查询速度比较快。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注