• python字典


    字符串:str = 'abc'

    列表:    list = ['a','b','c']

    元组:    tuple = ('a','b','c')

    字典:    dict = {'age':18}

    一、字典
    字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据。
    同样他也是python中唯一的映射类的数据类型。
    数据类型的分类:
    可变的(不可哈希)数据类型:list,dict
    不可变的(可哈希的)数据类型:str,int,bool,tuple
    dic = {"name":"jin","age":18,"sex":"male"}
    键值对的形式存在的,键: 值
    字典的键必须是不可变的数据类型。(工作中:都是由数字,或者str组成)
    字典的值是任意数据类型。
    dict = {键:值} ---> dict = {不可变的数据类型:任意的数据类型}
    优点:
    字典可以存储大量的数据,关系型数据。
    查询速度快。
    python3.5之前包括3.5版本,字典是无序的。
    python3.6开始,是有序的。(字典的键等于列表的索引)

     

    字典为什么寻址快
    因为:
      字典的键是不可变的数据类型,所以是可哈希的,
      字典在存入内存的时候会将你的所有的key先进行哈希,再将哈希值存入内存中,
      这样在查询的时候可以根据哈希值直接就可以找到,所以查询速度很快!

    二、字典的增删改查以及其他操作
    dict = {'小晶':{'name': '小晶','age': 23, 'sex': '女',},'name_list': ['王双','韩蕾','何青松']}




    dic = {'name': '小晶', 'age': 23, 'sex': '女', 'job': 'NoIt'}

    增:
    1、键直接改,有此key就改,无此key就添加
    dic['sex'] = '男'             #改
    dic['home'] = '惠州'      #添加

    2、setdefault 有此key则不做任何操作但是给我返回对应的值,无此key则添加
    dic.setdefault('sex')
    print(dic.setdefault('sex')) --->女

    dic.setdefault('sex','男')
    print(dic.setdefault('sex','男')) --->女

    dic.setdafault('love') --->'love':None
    dic.setdefault('hobby','吃') --->'bobby':'吃'
    print(dic)

    删:
    1、pop:通过键去删除键值对,也有返回值,
    如果没有此键,也没有设置参数,则报错,
    如果没有此键,但是设置了第二个参数,则不会报错,并且返回第二个参数。
    print(dic.pop('name'))   #小晶
    print(dic)                       #'age': 23, 'sex': '女', 'job': 'NoIt'

    print(dic.pop('name1'))                     #没有此键,没有设置参数,报错
    print(dic.pop('name1',None))            #没有此键,有设置参数,返回参数:None
    print(dic.pop('name1','没有此键'))     #没有此键,有设置参数,返回参数:没有此键


    2、popitem:python3.5之前随机删除某个键值对,3.6以后,删除最后一组键值对。有返回值.
    print(dic.popitem())     # ('job': 'NoIt')
    print(dic)                     # 'name': '小晶', 'age': 23, 'sex': '女'


    3、clear:清空
    dic.clear()
    print(dic)


    4、del
    按照键删除键值对
    del dic['name']

    删除整个字典
    del dic
    print(dic)

    改:
    1、通过键来改
    dic['age'] = 25
    print(dic)

    2、update
    dic = {"name":"jin","age":18,"sex":"male"}
    dic2 = {"name":"yin","weight":75}
    dic.update(dic2) # 将dic2中的所有键值对覆盖并添加到dic中,dic2不变。
    print(dic)
    print(dic2)

    #也可以直接在update括号内自定义添加,与写两个字典结合一样原理
    dic.update(a='666',b='222',name='taibai')
    print(dic)


    查:
    通过键直接查询,没有此键则报错
    print(dic['name'])
    print(dic['name1'])

    通过get()方法查询,没有此键则默认返回None,也可以自定义参数
    print(dic.get('name'))
    print(dic.get('name1'))
    print(dic.get('name1','没有此键'))

    其他方法:
    1、dic.keys():输出键,可以转化成list,可以遍历
    print(dic.keys(),type(dic.keys())) # 类似于列表的容器中
    l1 = list(dic.keys()) #转化成list
    print(l1)

    for key in dic.keys(): #遍历
      print(key)


    2、dic.values():输出值,可转化成list,可遍历。
    print(dic.values())
    print(list(dic.values())) #转化成list

    for key in dic.values(): #遍历
      print(key)

    3、dic.items():输出键值对,可转化成list,可遍历。
    print(dic.items())

    4、for循环输出字典:
    for i in dic.items():
      print(i)

    结果:以元组形式输出
    ('name', '小晶')
    ('age', 23)
    ('sex', '女')
    ('job', 'NoIt')


    for k,v in dic.items():
      print(k,v)

    结果:本身是什么类型输出就是什么类型
    name 小晶
    age 23
    sex 女
    job NoIt


    for i in dic:           相当于: for i in dic.keys():
      print(i)                           print(i)


    5、长度:
    print(len(dic))


    6、分别赋值:
    a,b = 10,20
    print(a,b)               #a = 10 , b = 20        int型


    a,b = [10,20]
    print(a,b)                #a = 10 , b = 20        int型

    a,b = ['10','20']
    print(a,b)                #a = 10 , b = 20        str型

    a,b = [(1,2),(3,4)]
    print(a,b)               #a = (1, 2), b = (3, 4)    tuple型


    a = 10
    b = 20
    a,b = b,a
    print(a,b)              #a = 20 , b = 10

     


    三、字典的嵌套
    dic = {'name_list': ['王双', 'xiaoming', '孙飞', 'xiaobai'],
    1: {'name': 'xiaobai', 'age': 18, 'sex': '男'},
    (1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
    }
    1,给name_list对应的列表追加一个值: 司徒大人.
    dic['name_list'].append('司徒大人')
    print(dic)

    dic.get('name_list').append('司徒大人')
    print(dic)

    2,将name_list对应的xiaoming 变成全部大写.
    dic['name_list'][1] = dic['name_list'][1].upper()
    print(dic)

    3, 将1对应的字典添加一个键值对: weight : 75
    dic[1]['weight'] = 75
    print(dic)

    dic.get(1).setdefault('weight',75)
    print(dic)

    4,将1对应的字典的name键对应的名字xiaobai换成xiaohei
    dic[1]['name'] = 'xiaohei'
    print(dic)

    5,将 {'ip': '192.168.1.1', 'port': 3306} 此字典的port键值对删除.
    dic[(1,2)][1].pop('port')
    print(dic)

     

  • 相关阅读:
    hadoop文件写入
    elastic(10) 基本查询
    hadoop 小知识点
    "hadoop namenode -format"命令的作用和影响的文件
    elastic(9)映射
    Linux 学习笔记之 --- epoll 事件模型详解
    Linux 学习笔记之 --- select 与 poll 事件模型详解
    Tornado 高并发源码分析之二---Tornado启动和请求处理流程
    Tornado 高并发源码分析之五--- IOLoop 对象
    Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
  • 原文地址:https://www.cnblogs.com/yidashi110/p/10092292.html
Copyright © 2020-2023  润新知