python基础(字典及常用操作、解构方法)

一、字典:

  1.1 定义:

why:
  列表的缺点:
  1,列表如果存储的数据比较多,那么他的查询速度相对慢。
  2,列表存储的数据关联性不强。

what: python基础数据类型之一:字典。
  python中唯一的映射类的数据,花括号{}括起来,他是以键值对形式存储,每一对键值对以
  逗号隔开的。
  {'name': '太白金星', 'age': 18, 'sex': 'man'}
  ps:
  数据类型的划分:
    容器非容器划分:
      容器型数据类型:list,tuple,dict,set。
      非容器型数据类型:int str bool

    可变与不可变划分:
      可变(不可哈希hash)的数据类型:list dict,set
      不可变(可哈希hash的)的数据类型: int bool str tuple
  对数据本身变化:
    i = 100
    i = 90
    print(i)
  字典是以键值对形式存储的,
    键:不重复的,唯一的,键的数据类型必须是不可变的数据类型。
    值:任意数据类型,对象。
  字典可以存储大量的键值对数据,
    python3.5包括3.5之前:字典是无序的。
    python3.6之后,字典变成有序的。
  字典的优点:
    1,字典存储大量的关系型数据。
    2,字典的查询速度非常快。

  1.2 字典的创建:

  
1 # 创建字典
2 dic = {}  # 创建空字典
3 dic = dict()  # 创建空字典
4 dic = {'a': 1, 'b': 2}  # 创建字典
5 dic = dict([(1, 2), ('name', 'alex')])  # [iterable]只要是可迭代对象即可创建字典
6 dic = dict.fromkeys('abc', 0)   # fromkeys(iterable, iterable1)可创建多个字典,iterable1后面这个可迭代对象如果为一个不可哈希(可变)对象,那么键a,b,c指向为同一内存地址
7 print(dic)
View Code

  1.3 字典的常用操作(增删改查):

  
 1 #
 2 dic = {"name": "jin", "age": 18}
 3 dic['sex'] = 'man'
 4 print(dic)
 5
 6 dic.setdefault('hobby', 'singsong')
   # setdefault()有返回值,如果键存在,则返回原来的键值对中的值,如果键不存在,则返回新增键值对的值
 7 dic.setdefault('name', 'alex')  # 如果字典内存在键值对,则忽略新增键值对,如果只增加键则值为None
 8 print(dic)
 9
10
11 # 删:
12 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
13 ret = dic.pop('hobby')
14 dic.pop('ghhjk')   # 如果没有这个键,则报错
15 print(ret)   # 返回删除键值对中的值
16 print(dic)
17
18 dic.popitem()   # python3.5之前随机删除键值对,3.6版本之后则字典则为有序字典,默认删除字典最后一个键值对
19 print(dic)
20
21 del dic['age']  # 删除指定键值对
22 del dic['adgsjds']   # 如果没键值对则报错
23 print(dic)
24 del dic   # 删除整个字典
25 print(dic)  # 打印结果报错
26
27 dic.clear()   # 清空字符串
28 print(dic)
29
30
31 # 改:
32 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
33 dic['name'] = 'alex'  # 指定修改字典键值对
34
35 dic.update(age=34)   # 指定修改键值对的值,此时键不能为数字
36 dic.update(gg=78)   # 修改方式增加一个新键值对
37 print(dic)
38
39 dic2 = {'name': 'alex', 'age': 18, 'addr': 'SZ'}   # 如果存在键值对则更新值,没有则添加新键值对
40 dic2.update(dic)
41 print(dic2)
42
43 # 查:
44 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
45 val = dic['age']   # 指定查找键值对
46 print(val)
47
48 val = dic.get('sex')   # 没有查找到结果时返回None
49 val = dic.get('hsdghj', '提示信息')   # 可以指定查找提示信息,如果字典中没有查找到,则返回提示信息
50 print(val)
View Code

  1.4 字典的其他操作方法:

  
 1 # 其他操作方法:
 2 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
 3 # for kv in dic:  # 默认指定遍历打印键值对的键
 4 for kv in dic.keys():   # 指定遍历打印键值对的键
 5     print(kv)
 6 
 7 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
 8 for v in dic.values():   # 遍历打印键值对的值
 9     print(v)
10 
11 dic = {'name': 'jin', 'age': 18, 'sex': 'man', 'hobby': 'singsong'}
12 for k, v in dic.items():  # 遍历打印键值对
13     print(k, '', v)
View Code

   1.5 字典的其他操作方法出现的错误方法:

  
 1 # 字典中生成的列表不能进行索引查找
 2 
 3 dic = {'1': 1, '2': 2}
 4 print(dic.keys())
 5 print(dic.values())
 6 print(dic.items())
 7 
 8 
 9 # 打印结果
10 # dict_keys(['1', '2'])
11 # dict_values([1, 2])
12 # dict_items([('1', 1), ('2', 2)])
View Code

   1.5 解构方法:

  
 1 # 解构方法(解构对象必须为iterable对象)
 2 
 3 a, b = (1, 2)
 4 a, b = [1, 2]
 5 a, b = 'ab'  # 解构必须一一对应
 6 a, b = {1: 2, 2: 3}  # 解构字典的键
 7 
 8 print(a, b)
 9 
10 
11 # 两个对象互换
12 a, b = (1, 2)
13 a, b = b, a
14 print(a, b)
View Code

 

posted @ 2019-03-23 16:51  Amorphous  阅读(243)  评论(0编辑  收藏  举报