• 字典


    一、什么是字典?

      字典是python的基础数据类型之一,字典可以存储大量数据,关系型数据。

    同样他也是python中唯一的映射关系的数据类型。

    数据类型的分类

      可变的(不可哈希)数据类型: list , dict, set

       不可变的(可哈希的)数据 类型: str, int, bool, tuple

      dic = { "name":"jin", "age":18, "sex":"male" }

      键值对的形式存在的,   键:值 

      字典的键,必须是不可变的数据类型。( 工作吕,都是由数字,或者 str 组成 )

           字典的值是任意数据类型。

      优点:

        字典可以存储大量的数据,关系型数据。

        查询速度快。

    python3.5 之前包括 3.5 版本,字典是无序的。

    python3.6 开始,是有序的。 (就是插入的顺序)

    二、字典的增删改查

    2.1 增

    dic = {  "name":'孙悟空',"年龄":28,"sex":'male' }

    # dic['job'] = 'IT'                                                       # 若键存在,会覆盖键对应的原有值;键不存在,添加该键值对

    dic.setdefault('job','IT')                                      # 若键不存在,添加之,否则什么操作也不作,而返回该键对应的值

    dic.setdefault('sal')                            # 若仅指定第一个参数 键,而不指定第二个参数 value ,第二个参数默认为None

    print(dic)                              # 输出结果: {'name': '孙悟空', '年龄': 28, 'sex': 'male', 'job': 'IT', 'sal': None}

    2.2 删除

    dic = {  "name":'孙悟空',"年龄":28,"sex":'male' }

    dic.pop(key)                            # 删除指定键对应的键值对,若指定键不存在,会报错;

    dic.pop(key,"指定键不存在”)                     # 删除字典中指定键 对应的键值对,若指定键不存,返回第二个参数的内容

    dic.popitem()                                      # python3.5及以前,随机删除一个键值对,python3.6开始,由于字典是有序的了,删除最后一组键值对

    dic.clear()                                       # 清除所有的键值对,但字典还存在

    del dic['name']                               # 按照 键 ,删除对应的键值对,

    del dic['name1']                           # 若指定的 键 不存在,会抛出错误:KyeError: 'name1'

    del dic                                        #  从内存级别删除整个字典,字典不复存在了

    2.3 改

    dic = {  "name":'孙悟空',"年龄":28,"sex":'male' }

    dic['name'] = "chris"    # 直接改

    dic.update(name = "西瓜大王")    # 覆盖添加

    notes:

    dic.update( 'name' = ""快乐大王)  #  这里关键字不能加引号,否则报错:SyntaxError: keyword can't be an expression

    2.4  查

    dic = {  "name":'孙悟空',"年龄":28,"sex":'male' }

    print( dic['name'] )                     # 按照 key 去查 ,键对应的值 ,缺点:如果键不存在,会报错 

    dic.get( 'name' )                       # 若键不存在,不会报错,默认返回None

    dic.get( 'name1', "指定的键不存在")           # 若键不存在,自定义返回值

    通过 for 循环 查:

    dic.keys()     、    dic.values()  、 dic.items()

    for key in dic.keys():

      print(key,end=" ")                     # 输出结果:name 年龄 sex job sal

    for value in dic.values():

      print(value, end = " ")                 # 输出结果: 孙悟空 28 male IT None

    for key,value in dic.items():                # 实际利用了分别赋值 原理:    a,b = 10,20

      print(key,value,end = " ")             # 输出结果: name 孙悟空 年龄 28 sex male job IT sal None

    三、字典的嵌套

     四、产生字典的方法:

          dic = {'name':'chris','age':18}

           dict.fromkeys(iterable ,value)

           dic.fromkeys(iterable,value)

           dict() 方法

       dict()方法,详解:

            

    class dict(object):
    """
    dict() -> new empty dictionary
    dict(mapping) -> new dictionary initialized from a mapping object's
    (key, value) pairs
    dict(iterable) -> new dictionary initialized as if via:
    d = {}
    for k, v in iterable:
    d[k] = v
    dict(**kwargs) -> new dictionary initialized with the name=value pairs
    in the keyword argument list. For example: dict(one=1, two=2)
    """




    dic1 = dict() # dict() 产生一个新的空字典
    print(id(dic1))
    dic2 = {'name':'chris','age':28}
    dic2_copy = dict(dic2.items()) # 根据映射对象的键值对,产生一个新的字典
    print(id(dic2),id(dic2_copy)) # 2266685747488 2266685748856
    print(dict([["one",1]])) # 将可迭代对象的每个元素的两个元素,分别赋值 k, v
    print(dict(one=1,two=2)) # 通过关键字参数对 ,产生新的字典



    # def func(x):return x%2 == 0
    # ret = filter(func,[1,2,3,4,5,6,7])
    # print(ret)
    # for i in ret:
    # print(i)
    #
    # def fmap(a,b):
    # return (a,b)
    # dic2 = {'name':'chris','age':18}
    # print(dic2.items())
    # ret = map(fmap,['name','age'],['chris',18])
    # print(ret)
    # # print(ret)
    # # dict(ret)
    # # print(fmap(3,5))
    # print(dict(ret))


    dic = {'name':'chris','age':18}
    print(dic.items())
    newdic = dict(dic.items())
    print(newdic)
  • 相关阅读:
    [翻译]汇编器和加载器简史
    一定要制作一个计划
    基本排序算法(冒泡,快排,插入,希尔,选择,归并)
    用yunio网盘搭建git私有仓库
    git 学习笔记1
    select函数
    axel源码学习(1)——重要流程细节
    axel源码学习(0)——程序逻辑
    Unix网络编程(3)——C/S模型几种情况
    【转】程序员技术练级攻略
  • 原文地址:https://www.cnblogs.com/chris-jia/p/9444091.html
Copyright © 2020-2023  润新知