400-616-5551

您所在位置: 首页> 学习课程> Python基础 :关于字典的知识都在这了!

Python基础 :关于字典的知识都在这了!

发布百知教育 来源:学习课程 2019-12-05

内容概览:

1.  字典的基本概念

2. 字典的增

3. 字典的删

4. 字典的改

5. 字典的查

6. 字典的其他操作

7. 字典的五种创建方式



字典的基本概念



1. 前面提到了列表,列表的缺点体现在:


列表如果存储大量的数据,查找速度相对会很慢
② 列表存储的数据一般没有什么关联性,比如 ["Jane", 160, "女"],单看这个列表你不知道它们之间的联系


2. 字典是除列表之外最灵活的内置数据结构类型,相比列表的优点有:


字典的查询速度非常快,因为它是 Python 中唯一的映射类型,采用键值对的形式存储数据
② 字典在 Python3.5 及之前的版本中是无序的,但是之后的版本开始优化机制,字典会按照创建之初的顺序排列
③ 字典与列表的区别:字典当中的元素是通过键来存取,而不是通过偏移来存取


3. 可哈希


① Python 对 key 进行哈希函数运算,根据计算的结果得到 value 的存储地址,所以字典是无序存储的,且 key 必须是可哈希的
② 可哈希表示 key 必须是不可变类型,比如 int、string、tuple 等,而且这个键是唯一的,后面再有相同的键就会替换前面的对应的 value



new_dic = {"name": "aaa", "name": "bbb"}

print(new_dic)    # {'name': 'bbb'}


02 

字典的增



1. 有则覆盖,无则添加



ic = {"name": "Jane", "age": 18, "sex": "female"}
dic["name"] = "John"print(dic)      # {'name': 'John', 'age': 18, 'sex': 'female'}
dic["hobby"] = "watch TV"print(dic)      # {'name': 'John', 'age': 18, 'sex': 'female', 'hobby': 'watch TV'}


2. setdefault(参数1, 参数2):有则不变,无则添加



dic = {"name": "Jane", "age": 18, "sex": "female"}
dic.setdefault("name", "John")print(dic)      # {'name': 'Jane', 'age': 18, 'sex': 'female'}
dic.setdefault("k", "v")print(dic)      # {'name': 'Jane', 'age': 18, 'sex': 'female', 'k': 'v'}


03 

字典的删



1. pop():和列表一样,也有返回值



dic = {"name": "Jane", "age": 18, "sex": "female"}# 注意:pop() 里面必须要有参数,且参数是字典的键,否则报错dic_pop = dic.pop("age")
print(dic_pop)      # 18print(dic)          # {'name': 'Jane', 'sex': 'female'}

# 另外,最好设置一个返回值,避免程序报错dic = {"name": "Jane", "age": 18, "sex": "female"}dic_pop = dic.pop("a", "找不到该键")
print(dic_pop)      # 找不到该键print(dic)          # {'name': 'Jane', 'age': 18, 'sex': 'female'}


2. del:没有返回值



dic = {"name": "Jane", "age": 18, "sex": "female"}
del dic["age"]print(dic)    # {'name': 'Jane', 'sex': 'female'}
# 使用 del 时,必须是该字典存在的键,否则会报错del dic["a"]print(dic)    # 报错


3. popitem():Python3.5及之前的版本字典是无序的,所以使用这个方法是随机删除一个键值对;之后的版本因为有序,就只删除最后一个键值对,和 pop() 功能一样



dic = {"name": "Jane", "age": 18, "sex": "female"}
dic_pop = dic.popitem()print(dic_pop)      # ('sex', 'female')print(dic)          # {'name': 'Jane', 'age': 18}
dic_pop = dic.popitem()print(dic_pop)      # ('age', 18)print(dic)          # {'name': 'Jane'}
# 注意 dic.pop(key) 与 dic.popitem() 的区别# 前者删除元素,括号里要加字典的键;后者是删除最后一对键值对


4. clear():清空字典


dic = {"name": "Jane", "age": 18, "sex": "female"}

dic.clear()
print(dic)    # {}



04 

字典的改


1. 直接赋值法



dic = {"name""Jane""age"18"sex""female"}dic["name"] = "Alex"
print(dic)    # {'name': 'Alex', 'age': 18, 'sex': 'female'}


2. update(dic):将某个字典的所有键值对有则覆盖,无则添加到另一个字典中可



dic = {"name": "Jane", "age": 18, "sex": "female"}new_dic = {"hobby": "nothing", "age": 20}new_dic.update(dic)
print(new_dic)      # {'hobby': 'nothing', 'age': 18, 'name': 'Jane', 'sex': 'female'}
# update() 的另一种用法,注意 key 不能加引号,也不能是数字,因为它是一个变量!dic.update(weight=120, high=170)print(dic)          # {'name': 'Jane', 'age': 18, 'sex': 'female', 'weight': 120, 'high': 170}


05 

字典的查


1. 直接根据字典的键取值


dic = {"name": "Jane", "age": 18, "sex": "female"}
ret1 = dic["name"]print(ret)      # Jane
# 如果没有该键就报错ret2 = dic["hobby"]  print(ret2)     # 报错


2. get(key):获取不到就返回 None,或设置默认值

    dic = {"name": "Jane", "age": 18, "sex": "female"}
    ret1 = dic.get("name")print(ret1)    # Jane
    ret2 = dic.get("hobby")print(ret2)    # None
    ret3 = dic.get("aaa", "字典中没有该键")print(ret3)    # 字典中没有该键


    06 

    字典的其他操作


    1. 首先了解字典的几个方法


      dic = {"name": "Jane", "age": 18, "sex": "female"}
      items = dic.items()print(items)      # dict_items([('name', 'Jane'), ('age', 18), ('sex', 'female')])
      values = dic.values()print(values)     # dict_values(['Jane', 18, 'female'])
      keys = dic.keys()print(keys)       # dict_keys(['name', 'age', 'sex'])


      2. 循环字典的每种元素


      dic = {"name": "Jane", "age": 18, "sex": "female"}
      # 循环字典的每一个键for key in dic.keys():    print(key) # 运行结果:nameagesex
      # 循环字典的每一个值for value in dic.values():    print(value) # 运行结果:Jane18female

      # 循环字典的每一个键值对for key,value in dic.items():    print(key, value) # 运行结果:name Janeage 18sex female


      07 

      字典的五种创建方式


      ######## 第一种:dict({键值对}) ########dic = dict(name="Jane", age="12")# 注意:这种创建方式,值不能是数字,即不能是 age=12print(dic)    # {'name': 'Jane', 'age': '12'}

      ######## 第二种:dic = {键值对} ########dic = {"name": "Jane", "age": 12}print(dic)    # {'name': 'Jane', 'age': 12}

      ######## 第三种:fromkeys({键值对}) ########dic.fromkeys("name", "Jane")# 注意:这里的第一个参数是字典的键,可迭代,第二个参数是值,默认是 Noneprint(dic)    # {'name': 'Jane', 'age': 12}

      ######## 第四种 ########dic = dict([("a", 1), ("b", 2), ("c", 3)])print(dic)    # {'a': 1, 'b': 2, 'c': 3}

      ######## 第五种:zip() ########l1 = [1, 2, 3]l2 = ["a", "b", "c"]dic = dict(zip(l1, l2))print(dic)    # {1: 'a', 2: 'b', 3: 'c'}


      python培训班:http://www.baizhiedu.com/python2019










      上一篇:web前端培训 | 用 globalThis 访问全局对象

      下一篇:五级数据挖掘工程师,你处在哪一级?

      相关推荐

      关闭

      立即申请

      www.baizhiedu.com