Python 学习日记 第五天

时间:2020-12-06 20:44:18

日常鸡汤:

  曾经求学所受的苦,将来都会成为建筑美好生活的一块砖


 

一、字典的介绍:

  字典(dict)是python中唯一的一个映射类型,以{}括起来的 键值对 {key:value},在此 Key 是唯一的,切必须是可以哈希的,Value没有要求,可以是任何数据类型。为什么要有字典,因为在查询的过程当中,当列表或者元组过于庞大的时候,靠索引定位会显的特别效率低,所以用Key:Value 键值对的形式来寻找会更好一些。

二、字典的基本操作

1.增:

 1 # 先定义一个字典
 2 
 3 dic = {}
 4 
 5 dic['name'] = 'abc'         # 向字典中添加一个 'name':'abc'
 6 
 7 # 还有一种方法就是使用setdefault
 8 
 9 dic.setdefault('李嘉诚')      # 向字典添加一个 Key为:'李嘉诚'   Value为None
10 
11 dic.setdefault('a','b')        # 向字典添加一个键值对: 'a':'b'    
12 
13 
14 # 当使用setdefault的时候,使用了一个已经存在的Key值,则setdefault不会起作用
15 
16 dic.setdefault('a','2')        # 这时候这个字典中键值对还是为  'a' : 'b'

2.删

del dic[key]             删除指定的key的键值对,key必须要存在,否则会报错。

pop(key,default)      删除指定的key的键值对,如果key不纯在,如果default有值,则返回default,如果没有值,则报错,有返回值 Value

popitem()            删除以key为主导的升序的第一个键值对,返回一个元组(key,value) ,如果字典为空,则会报错

clear()                      清空字典

 1 dic = {'a':'b','c':'d','e':'f'}              # 创建一个字典
 2 
 3 del dic['a']
 4 print(dic)                                   # 输出 {'c': 'd', 'e': 'f'}
 5 
 6 dic.pop('c')                                 # 用pop方法删除key为‘c’的键值对
 7 print(dic)                                   # 输出{'e': 'f'}
 8 
 9 ret = dic.pop('c',666)                       # 删除一个字典没有的值,会返回666
10 print(ret)                                   # 输出 666
11 
12 raw = dic.popitem()                          # 删除最后一对键值对
13 print(raw)                                   #  输出('e', 'f')
14 
15 dic.clear()                                  # 清空操作
16 print(dic)                                   # 返回{}

3.改

改,只能修改Value的值,不能修改Key

修改单个键值对: dic[key] = value

批量修改键值对:olddic.update(newdic)

 1 d = {'name':"sz",'age':18}                     # 创建一个字典
 2 print(d)                                       # 输出为{'name': 'sz', 'age': 18}
 3 d['age']=20                                    # 通过赋值操作更改
 4 print(d)                                       # 输出{'name': 'sz', 'age': 20}
 5 d['a'] = 'b'                                   # 加入key为不存在的值
 6 print(d)                                       # 输出{'name': 'sz', 'age': 20, 'a': 'b'} 则为增加操作
 7 
 8 d1 = {"age":14,'add':'jia'}                    # 定义一个新的列表
 9 d.update(d1)                                   # 把d进行更新。
10 print(d)                                       # {'name': 'sz', 'age': 14, 'a': 'b', 'add': 'jia'} 
11                                                # 在更新过程中,如果有相同的键值对,则进行赋值,如果没有,则新添

4.查

简单查询

dict[key]                       直接通过key值进行查询,如果没有相对应的key值,则会报错

get(key,default)           通过key值进行查询,返回相对应key的value值,如果没有对应的值,不会报错,会返回一个none或者指定的值

setdefault(key,default)             通过key值查询,返回对应的value值,如果不存在则新增一个键值对        

 1 d = {'name':'lx','age':18}                    # 定义一个字典
 2 print(d['name'])                              # 直接查询
 3 
 4 #get()
 5 v = d.get("age")                              # 查询key为‘age’的键值对
 6 print(v)                                      # 输出18
 7 b = d.get("ac",660)                           # 如果查询的key不存在,返回660
 8 print(b)                                      # 输出660
 9 
10 # setdefault
11 c = d.setdefault("age")                       # 查询key为‘age’
12 print(c)                                      # 输出18
13 e = d.setdefault('age1',2234)                 # 如果查询没有的key
14 print(d)                                      #输出 {'name': 'lx', 'age': 18, 'age1': 2234} 新增

其他操作

dict.key()                 获取所有的键

dict.value()              获取所有的值

dict.items()              获取所有的键值对 返回的是一个元组

1 d = {'name':'chamster','age':18}
2 print(d.keys())                      # 输出dict_keys(['name', 'age'])
3 print(d.values())                    # 输出dict_values(['chamster', 18])
4 print(d.items())                     # 输出dict_items([('name', 'chamster'), ('age', 18)])

注意在python2.x的版本中,如果中间对字典进行了增加或者删除的操作,则dict.key()等的值不会改变

在python3.x的版本中,则会相对应的发生改变

5.遍历key和value的值

 1 d = {'name':'lx','age':18,'add':'sh'}
 2 for i in d.keys():                     # 遍历 key 遍历value操作一样
 3     print(i)
 4     print(d[i])
 5 
 6 for i in d.items():
 7     print(i[0])
 8     print(i[1])
 9 
10 for k,v in d.items():               # 通过解包进行遍历
11     print(k,v)

6.字典的嵌套

  通过索引就可访问字典中的字典,没什么大的难点