zoukankan      html  css  js  c++  java
  • python 基础学习笔记(4)--字典 和 集合

    **字典:**

    - [ ] 列表可以存储大量的数据,但是如果数据量大的话,他的查询速度比较慢,因为列表只能顺序存储,数据与数据之间的关联性不强。所以便有了字典(dict)这种容器的数据类型,它是以{}括起来的。

    > 语法:{‘key1’ :1,‘key2’:2}
    其中 key :必须是可哈希的数据类型,例如:int,bool,str,tuple。不可哈希的有:list dict set(集合),而冒号后的value 没有要求

    例如.

    > 合法:
    > dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}
    > 非法:
    > dic = { [1,2,3] : '555'} # list 是可变的,不能作为key
    > dic = { {‘abc’ :123} :555} #dict是可变的,不能作为key

    **- 字典的增删改查功能**

    1. 增

    > `dic = {}` #空字典
    > `dic [ ‘name’ ] = ‘张三’`
    > `dic [ 'age' ] = 23`
    > `print (dic)`
    > #结果 : {'name' : '张三', 'age' : 23}
    > 如果dict 中没有出现这个key,就会将 key - value 组合添加到这个字典中。
    2. 删

    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > `s = dic.pop(123)` *# pop 删除有返回值,返回的是被删的值*。
    > `print(s)` *## 输出为666*
    > `print(dic)`
    > *##输出为 dic = {123 :456,’name‘ :‘张三’,(1,2,3):555}*
    >
    >
    > `dic.clear()` *# 清空*

    3. 改


    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > `dic[ 'name‘ ] = ’李四‘` *#当 字典中存在’name‘这个key那么就直接修改赋值,若不存在,则添加。*
    >
    > `print(dic)`
    > *#dic = {123 :456,True : 666,’name‘ :‘李四’,(1,2,3):555}*
    > `dic.updata({'key' : 'v', 'qwe' : 789 })`
    > *#当updata中的字典里没有dic中键值对(key-value)就添加到dic中,如果有就修改,类型于 列表中的 list.expend()*

    4. 查

    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > `s = dic ['name']` #通过键(key)来查找,如果这个键不存在字典中,那么就报错
    > `print(s)` # '张三'
    > `q = dic.get(True)` #通过键来查看,如果键不在字典中,就输出none


    **字典的其他操作**

    1. 获取字典的键

    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > `key_list = dic.keys()`
    > `print(key_list)`
    > **结果**
    > dict_keys([123, True, 'name'],(1,2,3))
    >

    2. 获取字典的值

    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > `value_list = dic.values()`
    > `print(value_list)`
    > **结果**
    dict_value(456,666,'张三',555)

    3. 获取键值对

    > `dic = {123 :456,True : 666,’name‘ :‘张三’,(1,2,3):555}`
    > key_value_list = dic.items()
    > print(key_value_list)
    > 结果
    > dict_items([(123,456), (True,666), ('name','张三'), ((1,2,3), 555)])
    >


    **集合**


    - [ ] 集合就像放弃了值(value),仅剩下键的字典一样。键于键之间不运行重复。(如果你仅仅想知道某一个元素是否存在而不关心其他的,使用集合是个非常好的选择。)
    - [ ] 集合中的元素是必须和哈希的,但是集合本身是不可哈希的,是可以改变的

    > set1 = {'1','name',2,True,[1,2,3]} # 报错
    set2 = {'1','name',2,True,{1:2}} # 报错
    set3 = {'1','name',2,True,(1,2,[2,3,4])} # 报错

    set 集合的增删改查

    1. 增加

    > `s = {'abc', 'efg', 'hij','lmn' }`
    > `s.add('123')`
    > `print(s)` #{'abc', 'efg', 'hij','lmn' ,'123'}
    > `s.add('abc')`
    > `print(s)` #{'abc', 'efg', 'hij','lmn' ,'123'} 重复的内容不会被添加到set集合中
    >s.updata(['111','222','333'])
    >print(s)#{'abc', 'efg', 'hij','lmn' ,'123', '111', '222', '333'}# 迭代更新
    >

    2. 删除

    > `s = {'abc', 'efg', 'hij','lmn' }`
    > `item = s.pop()` #随机弹出一个
    > `print(s)`
    > `print(item)`
    > 结果
    > {'lmn', 'abc', 'efg'}
    > hij
    > `s.remove('abc')`#直接删除元素
    > `print(s)`
    > 结果
    > {'lmn', 'efg',}
    > `s.clear()` #清空set集合,


    3. 修改

    > set集合中的数据没有索引,也没有办法去定位一个元素,所以没有办法进行直接修改。
    > 但是我们可以雷雨删除和添加来完成修改。
    > 例如
    > `s = {'abc', 'efg', 'hij','lmn' }`
    > #将’abc‘ 改成’ 123‘
    > `s.remove('abc')`
    > `s.add('123')`
    > `print(s)`
    > #{ 'efg', 'hij','lmn', '123'}


    4. 查询

    > #set 集合是一个可迭代对象,所以可以进行for循环
    > for item in s:
    > print(item) #遍历

    **这就是字典和集合的几大内容
    到目前位置就是 python中的几大数据类型。感谢点击和观看,欢迎评论。**

  • 相关阅读:
    TinyOS功率编程指南
    深度学习入门资料
    通信常识
    CTF入门
    前端开发工具之服务器选择
    Spring
    NoSQL -- MongoDB
    NoSQL -- Redis
    mysql alter table修改表结构添加多个字段的几个写法
    gongle 访问助手安装
  • 原文地址:https://www.cnblogs.com/haoshaoqian/p/11150442.html
Copyright © 2011-2022 走看看