zoukankan      html  css  js  c++  java
  • Python 字典

    访问字典里的值:

    >>>dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
    >>>print "dict['Name']: ", dict['Name'];
    dict['Name']:  Zara
    >>>print "dict['Age']: ", dict['Age'];
    dict['Age']:  7

    如果用字典里没有的键访问数据,会输出错误。


     添加、修改、删除字典:

    dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
     
    dict['Age'] = 8; # update existing entry
    dict['School'] = "DPS School"; # Add new entry
     
     
    print "dict['Age']: ", dict['Age'];
    print "dict['School']: ", dict['School'];
    
    
    del dict['Name']; # 删除键是'Name'的条目
    dict.clear();     # 清空词典所有条目
    del dict ;        # 删除词典
     
    print "dict['Age']: ", dict['Age'];

    结果:

    dict['Age']:  8
    dict['School']:  DPS School
    dict['Age']:
    Traceback (most recent call last):
      File "test.py", line 8, in <module>
        print "dict['Age']: ", dict['Age'];
    TypeError: 'type' object is unsubscriptable

    字典特性:

      字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

    两个重要的点需要记住:

     1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。

    2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行。


    字典常用函数:

    函    数 说    明
    dict.clear()
    删除字典内所有元素。(无返回值)
    dict.copy()
    返回一个字典的浅复制。
    dict.fromkeys(seq[, value]))
    用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
    dict.get(key, default=None)
    返回指定键的值,如果值不在字典中返回默认值。
    dict.has_key(key)
    用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false。
    dict.items()
    以列表返回可遍历的(键, 值) 元组数组。
    dict.keys()
    以列表返回一个字典所有的键。
    dict.setdefault(key, default=None)
    和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。
    dict.update(dict2)
    把字典dict2的键/值对更新到dict里。(同key,dict2覆盖dict)
    dict.values()
    以列表返回字典中的所有值。
    pop(key[,default])
    删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    popitem()
    随机返回并删除字典中的一对键和值。如果字典已经为空,却调用了此方法,就报出KeyError异常。

    dict.fromkeys(seq[, value])):

    >>>seq = ('name', 'age', 'sex')
    >>>dict = dict.fromkeys(seq)
    >>>dict
    {'age': None, 'name': None, 'sex': None}
    >>>dict = dict.fromkeys(seq, 10)
    >>>dict
    {'age': 10, 'name': 10, 'sex': 10}

    dict.get(key, default=None):

    >>>dict = {'Name': 'Zara', 'Age': 27}
    >>>print "Value : %s" %  dict.get('Age')
    Value : 27
    >>>print "Value : %s" %  dict.get('Sex', "Never")
    Value : Never

    dict.items():

    dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
     
    print "字典值 : %s" %  dict.items()
     
    # 遍历字典列表
    for key,values in  dict.items():
        print key,values

    结果:

    字典值 : [('Google', 'www.google.com'), ('taobao', 'www.taobao.com'), ('Runoob', 'www.runoob.com')]
    Google www.google.com
    taobao www.taobao.com
    Runoob www.runoob.com

    字典值可以是任意数值类型:
    >>> dict1 = {"a":[1,2]}      # 值为列表
    >>> print dict1["a"][1]
    2
    >>> dict2 = {"a":{"c":"d"}}   # 值为字典
    >>> print dict2["a"]["c"]
    d

     

    Python 直接赋值、浅拷贝和深度拷贝解析:

    • 直接赋值:其实就是对象的引用(别名)。b = a: 赋值引用,a 和 b 都指向同一个对象。

    • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

    • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

      import copy
      a = [1, 2, 3, 4, ['a', 'b']] #原始对象
       
      b = a                       #赋值,传对象的引用
      c = copy.copy(a)            #对象拷贝,浅拷贝
      d = copy.deepcopy(a)        #对象拷贝,深拷贝
       
      a.append(5)                 #修改对象a
      a[4].append('c')            #修改对象a中的['a', 'b']数组对象
       
      print( 'a = ', a )
      print( 'b = ', b )
      print( 'c = ', c )
      print( 'd = ', d )

      结果:

      ('a = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
      ('b = ', [1, 2, 3, 4, ['a', 'b', 'c'], 5])
      ('c = ', [1, 2, 3, 4, ['a', 'b', 'c']])
      ('d = ', [1, 2, 3, 4, ['a', 'b']])
  • 相关阅读:
    VMware Workstation CentOS7 Linux 学习之路(2)--.net core环境安装
    VMware Workstation CentOS7 Linux 学习之路(1)--系统安装
    Castle IOC概念理解
    Visual Studio Nuget还原步骤
    Js中分号使用总结
    ABP理论学习之依赖注入
    C# 中字段和属性的使用时机
    C#基础知识梳理系列
    .Net 中的IL中间语言基本语法
    项目工程结构说明(Internal)
  • 原文地址:https://www.cnblogs.com/Vinson404/p/7383138.html
Copyright © 2011-2022 走看看