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

    1.创建和使用字典

    phonebook = {'Alice':'2314', 'Beth':'9102', 'Cecil':'3258'}

    注意:字典中的键是唯一的,而值并不唯一

    2.dict函数

    可以用该函数,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典,代码如下:

    >>> items = [('name', 'Gumby'), ('age', 42)]
    >>> d = dict(items)
    >>> d
    {'age': 42, 'name': 'Gumby'}

    >>> d['name']
    'Gumby'
    >>> d['age']
    42

    dict函数也可以通过关键字参数来创建字典,如下例所示:

    >>> d = dict(name='Gumby',age=42)
    >>> d
    {'age': 42, 'name': 'Gumby'}
    >>>

    3.字典的基本操作

    字典的基本行为在很多方面与序列(sequence)雷类似

    len(d)返回d中项(键值对)的数量

    d[k]返回关联到键k上的值

    d[k]=v将值v关联到键k上

    del d[k]删除键为k的项

    k in d检查d中是否有含有键为k的项

    尽管字典和序列有很多特性相同,单页有一下一些重要的区别

    键类型:字典的键不一定为整形数据,键可以是任意的不可变类型,比如:浮点型,字符串,或元组

    自动添加:即使键期初在字典中并不存在,也可以为他赋值,这样子字典就会建立新的项,而不能讲值关联到列表范围之外的索引上,

    成员资格:表达式 k in d(d为字典)查找的是键,而不是值,表达式v in 1 (1为列表)则用来查找值,而不是索引,这样看起来好像有些不太一致,但是习惯以后就会感觉非常自然了。毕竟,如果字典含有指定的键,查找相应的值也就很容易了

    字典示例1:

    #一个简单的数据库

    #字典使用个人名作为键,每个人用另一个字典来表示,其键‘phone’和‘addr’分别表示他们的电话和地址,代码如下:

    people = {
    'Alice':{
    'phone':'2341',
    'addr':'Foo drive 23'}
    }

    labels = {
    'phone': 'phone number',
    'addr': 'address'
    }
    name = raw_input("Name: ")
    request = raw_input('Phone number(p) or address (a)?')
    if request == 'p':key = 'phone'
    if request == 'a':key = 'addr'

    if name in people:print "%s' s %s is %s." %
    (name, labels[key], people[name][key])

    4.字典的格式化字符串

    >>> phonebook = {'Alice':'2314', 'Beth':'9102', 'Cecil':'3258'}
    >>> phonebook
    {'Beth': '9102', 'Alice': '2314', 'Cecil': '3258'}
    >>> "Cecil's phone number is %(Cecil)s." % phonebook
    "Cecil's phone number is 3258."

    5.字典方法

    1.clear方法

    该方法清楚字典中所有的。这是个原地操作,所以无返回值,

    >>> d = {}
    >>> d['name'] = 'Gumby'

    >>> d['age'] = '56'
    >>> d
    {'age': '56', 'name': 'Gumby'}
    >>> d.clear()
    >>> d
    {}

    2.copy方法

    该方法返回一个具有相同键值对的新字典(这个方法实现的是浅赋值,因为值本身就是相同的,而不是副本)

    #使用copy方法进行浅复制
    x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
    y = x.copy()
    y['username'] = 'mlh'
    y['machines'].remove('bar')
    print y
    print x

    3.fromkeys方法

    该方法使用给定的键建立新的字典,每个键都对应一个默认值None。

    >>> dict.fromkeys(['gender', 'age'])
    {'gender': None, 'age': None}

    如果不想使用None作为默认值,也可以自己提供默认值,代码如下:

    >>> dict.fromkeys(['gender', 'age'], '(unknown)')
    {'gender': '(unknown)', 'age': '(unknown)'}

    4.get方法

    该方法是一个更宽松的访问字典项的方法,一般来说,如果试图访问字典中不存在的项时会出错,二用get就不会,示例如下:

    >>> d = {}
    >>> print d['name']

    Traceback (most recent call last):
    File "<pyshell#125>", line 1, in <module>
    print d['name']
    KeyError: 'name'
    >>> print d.get('name')
    None

     5.has_key方法

    该方法可以检查字典中是否含有特定的键,表达式d.has_key(k)相当于表达式k in d。

    >>> d = {}
    >>> d.has_key('name')
    False
    >>> d['name'] = 'lisi'
    >>> d.has_key('name')
    True

    6.items 和iteritems

    items方法将字典所有的项以列表方式返回,列表中的每一项都表示为(键、值)对的形式。但是项在返回时并没有遵循特定的次序,

    >>> d = {'title': 'Python web site', 'url': 'http://www.baidu.com', 'spam': 0}

    >>> d.items()
    [('url', 'http://www.baidu.com'), ('spam', 0), ('title', 'Python web site')]

    iteritems方法的作用大致相同

    >>> d.iteritems()
    <dictionary-itemiterator object at 0x0000000002E6C458>
    >>> list(d.iteritems())
    [('url', 'http://www.baidu.com'), ('spam', 0), ('title', 'Python web site')]
    >>>

    很多情况下使用iteritems会更搞笑,,尤其是想要迭代结果的情况下,光宇迭代器的更多信息,请参见第九章

    7.keys和iterkeys

    keys方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器

    8.pop方法

    pop方法用来过的对应于给定的键的值,然后这个键值对从这个字典中移除,

    >>> d = {'x':1, 'y': 2}
    >>> d.pop('x')
    1
    >>> d
    {'y': 2}
    >>>

    9.popitem方法

    该方法弹出一个随机项,

    >>> d = {'title': 'Python web site', 'url': 'http://www.baidu.com', 'spam': 0}
    >>> d.popitem()
    ('url', 'http://www.baidu.com')
    >>> d
    {'spam': 0, 'title': 'Python web site'}

    10.setdefault方法

    该方法在某种程度上类似于get方法,能够过的与给定的键值相关联的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的值

    >>> d = {}
    >>> d.setdefault('name', 'n/a')
    'n/a'
    >>> d
    {'name': 'n/a'}
    >>> d['name'] = 'Gumby'

    >>> d.setdefault('name', 'n/a')
    'Gumby'
    >>>

    11.update方法

    该方法可以利用一个字典更新另外一个字典

    >>> d = {'title': 'Python web Site', 'url': 'www.baidu.com', 'changed': 'mar'}
    >>> x = {'title': 'Python Language Website'}
    >>> d.update(x)
    >>> d
    {'url': 'www.baidu.com', 'changed': 'mar', 'title': 'Python Language Website'}

    12.values 和itervalues

    values方法一列表的形式放回字典中的值(itervalues返回值的迭代器)。

    >>> d = {}
    >>> d[1]=1
    >>> d[2]=2
    >>> d[3]=3
    >>> d.values()
    [1, 2, 3]

  • 相关阅读:
    SpringCloud 基础知识
    Spring 相关知识
    Java JDBC学习笔记
    Java JVM 相关基础知识
    ES6 块状绑定
    Docker 安装(window7)及基本命令
    Node.js 安装(Window7)及基本npm命令
    flask 模型类中relationship的使用及其参数backref的说明,
    flask中的状态保持(cookie,session)
    flask中request的属性说明
  • 原文地址:https://www.cnblogs.com/liyanbin/p/7474755.html
Copyright © 2011-2022 走看看