zoukankan      html  css  js  c++  java
  • Python第四章-字典

    第四章 字典-当索引不好用时
    4.0  
      字典可以理解成是C++里的map,可以映射任何类型。字典这种结构类型称为映射(mapping)。

      字典是Python中唯一内建的映射类型,字典中的值并没有特殊顺序,但是都是存在一个特定的键里。键可以是数字、字符串甚至是元组。

    4.1-4.2 了解创建和使用字典
    {
       >>> phonebook = {'Alice':'2345' ,'Beth':'9102' ,'Cecil':'3258'}
       >>> phonebook['Alice']
       '2345'
       >>> phonebool['asd']
       Traceback (most recent call last):
       File "<pyshell#2>", line 1, in <module>
       phonebool['asd']
       NameError: name 'phonebool' is not defined
    }
    4.2.1 dict函数
        可以通过dict函数,通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典。
          >>> items = [('name' ,'Gumby') ,('age' ,42)]
          >>> d = dict(items)
          >>> d
          {'name': 'Gumby', 'age': 42}
          >>> d['name']
          'Gumby'
        dict函数也可以通过关键字参数来创建字典
         >>> d = dict(name='Gumby' ,age=42)
    >>> d
    {'name': 'Gumby', 'age': 42}
    4.2.2 基本字典操作
           len(d)
      d[k]
      d[k]= v
      k in d  k是键不是值
      键类型:其他不可变类型
    4.2.3 格式化字符  
    phonebook = {
    'Beth' : '9102' ,'Alice' : '2341' ,'Cecil' : '3258'
    }
    "Cecil's phone number is %(Cecil)s." % phonebook

    "Cecil's phone number is 3258."


    替换html里面变量
    {
      >>> template = '''<html>
      <head><title>%(title)s</title></head>
      <body>
      <hl>%(title)s</hl>
      <p>%(text)s</p>
      </body>'''
      >>> data = {'title':'Mu Home Page' ,'text':'Welcome to my home page!'}
      >>> print (template % data)
      <html>
      <head><title>Mu Home Page</title></head>
      <body>
      <hl>Mu Home Page</hl>
      <p>Welcome to my home page!</p>
      </body>
      >>> 
    4.2.4 字典方法
    1.clear 
    {
    A:
      >>> d = {}
      >>> d['name'] = 'Gumby'
            >>> d['age'] = 42
      >>> d
      {'name': 'Gumby', 'age': 42}
            >>> return_value = d.clear()
       >>> d
      {}
      >>> print(return_value)
      None
    B:
      >>> x = {}
      >>> y = x
      >>> x['key'] = 'value'
      >>> y
      {'key': 'value'}
      >>> x = {}
      >>> y
      {'key': 'value'}
      >>> x
      {}
    C:
      >>> x = {}
      >>> y = x
      >>> x['key'] = 'value'
      >>> y
      {'key': 'value'}
      >>> x.clear()
      >>> y
      {}
      >>> x
      {}   
    }

    2.
    A:copy(浅复制) 
    <注意一个问题,虽然是浅复制,但是=并不能导致值修改的同步,用方法才行>
    {
    >>> x = {'username':'admin' ,'machines':['foo' ,'bar','baz']}
    >>> y = x.copy()
    >>> y['username'] = 'mlh'
    >>> y['machines'].remove('bar')
    >>> y
    {'machines': ['foo', 'baz'], 'username': 'mlh'}
    >>> x
    'machines': ['foo', 'baz'], 'username': 'admin'}
    >>> 
    }

    B:deepcopy 这个可以理解成是真正的把值拷贝过去
    {
    >>> from copy import deepcopy
    >>> d = {}
    >>> d['name'] = ['Alfred' ,'Bertrand']
    >>> c = d.copy()
    >>> dc = deepcopy(d);
    >>> d['name'].append('CVasdsa')
    >>> c
    {'name': ['Alfred', 'Bertrand', 'CVasdsa']}
    >>> dc
    {'name': ['Alfred', 'Bertrand']}
    >>> 
    }
    3.fromkeys
       fromkeys方法使用给定的键建立新的字典,每个键默认对应的值是None
       {
         >>> {}.fromkeys(['name','age'])
         {'name': None, 'age': None}
         >>> dict.fromkeys(['name','age'])
         {'name': None, 'age': None}
         >>> #默认值
         >>> dict.fromkeys(['name','age'] ,'(unknown)')
         {'name': '(unknown)', 'age': '(unknown)'}
       >>> 
       }
    4.get
      更宽松的访问字典的方法,不存在不会报错,而且支持默认参数
      {
        >>> d = {}
        >>> print(d['name'])
        Traceback (most recent call last):
        File "<pyshell#82>", line 1, in <module>
        print(d['name'])
        KeyError: 'name'
        >>> print(d.get('name'))
        None
        >>> print(d.get('name','N/A'))
        N/A
      }

    5.has_key 判断键在不在(3.0之上的版本不支持,我下面给出2.7.6的例子) 
     {
        >>> d = {}
        >>> d.has_key('name')
        False
        >>> d.has_key('name')
        True
      }

    6.items和iteritems
        items方法将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)
        但是项在返回时并没有特殊的顺序。
       {
          >>> d = {'title':'Python web stre' ,'url' : 'http://www.python.org' ,'spam':0}
          >>> d.items()
          dict_items([('url', 'http://www.python.org'), ('spam', 0), ('title', 'Python web stre')])
          >>> #iteritems方法的作用大致相同,但是会返回一个迭代器对象而不是列表
          <但是 什么鬼? 编译错误了!>
          >>> it = d.iteritems()
          Traceback (most recent call last):
          File "<pyshell#15>", line 1, in <module>
          it = d.iteritems()

       }


    7.keys和iterkeys
      keys方法将字典中的键以列表方式返回,而iterkeys则返回针对键的迭代器。
     {
       >>> d = {'x':1 ,'y' :2}
       >>> d.keys()
       dict_keys(['y', 'x'])
       >>> it = d.iterkeys()
       Traceback (most recent call last):
       File "<pyshell#4>", line 1, in <module>
       it = d.iterkeys()
       AttributeError: 'dict' object has no attribute 'iterkeys'  
      }
     
    8.pop
      pop方法返回字典的给定键的值,并且从字典中把这个键值对删除。
      {
        >>> d = {'x':1 , 'y':2}
        >>> d.pop('x')
        1
        >>> d
        {'y': 2}

      }


    9.popitem
      随机弹出来一组键值对,因为存数不是序列的,所以不能控制顺序。
      <注意和pop的区别,pop是弹出来一个指定键的,poptiem是随机弹出来一个删除>
      {
         >>> d = {
               'url':'http://www.python.org' ,'spam':0 ,'title':'Python Web Site'
        }
    >>> d.popitem()
    ('title', 'Python Web Site')
    >>> d
    {'url': 'http://www.python.org', 'spam': 0}
    >>> 
      }
     
    10.setdefault
      setdefault方法设定值,如果存在那就不修改,否则就增加上,如果默认参数是空,那么就默认None
      {
        >>> d = {}
        >>> d.setdefault('name' ,'N/A')
        'N/A'
        >>> d
        {'name': 'N/A'}
        >>> d['name'] = 'Gumby'
        >>> d.setdefault('name' ,'N/A')
        'Gumby'
        >>> d
        {'name': 'Gumby'}

       }  


    11.update
      update方法可以利用一个字典项更新另一个字典项:
      <有就覆盖,没有就直接增加>
      {
         >>> d = {
                  'title':'Python Web Site',
                  'url' : 'http://www.python.org',
                  'changet':'Mar 14 22:09:15 MET 2008'
          }
        >>> x = {'title' : 'Python Language Website'}
        >>> d.update(x)
        >>> d
       {'changet': 'Mar 14 22:09:15 MET 2008', 'url': 'http://www.python.org', 'title': 'Python Language Website'}

     }


    12.values和itervalues 
       返回value,一个是列表,一个是索引
        {
           >>> d = {}
           >>> d[1] = 1
           >>> d[2] = 2
           >>> d[3] = 3
           >>> d[4] = 1
           >>> d.values()
           dict_values([1, 2, 3, 1])      
        }

     
  • 相关阅读:
    【HDU】2461 Rectangles
    【POJ】2409 Let it Bead
    【HDU】3208 Integer’s Power
    【HDU】1812 Count the Tetris
    【POJ】2888 Magic Bracelet
    【HDU】2865 Birthday Toy
    黑白色的华为(6) 不是银弹的银弹
    黑白色的华为(10) 不是答案的答案
    ubuntu上升级cmake到3.16版本
    黑白色的华为(8) 从加法到减法
  • 原文地址:https://www.cnblogs.com/csnd/p/12062366.html
Copyright © 2011-2022 走看看