• python学习:字典


    字典的使用

    字典有很多好用的地方。字典每个元素都有键和值。如同现代汉语字典中的拼音和对应的文字。字典中的键是唯一的,而值不一定唯一。你看,和现代汉语字典多么的相似。

    经典字典使用函数

    1. dict:通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典。当然dict成为函数不是十分确切,它本质是一种类型。如同list。
      items=[('name','zhang'),('age',42)]
      d=dict(items)
      d['name']
      1. len(d):返回项的数量
      2. d[k]:返回键k上面的值。
      3. d[k]=v:将k对应的值设置为k。
      4. del d[k]:删除字典中的这一项。
      5. k in d:检查d中是否含有键为k的项。注:只能查找键,不能查找值。

    简单的电话本示例:

    # A simple database
    
    # A dictionary with person names as keys. Each person is represented as
    # another dictionary with the keys 'phone' and 'addr' referring to their phone
    # number and address, respectively.
    
    people = {
    
        'Alice': {
            'phone': '2341',
            'addr': 'Foo drive 23'
        },
    
        'Beth': {
            'phone': '9102',
            'addr': 'Bar street 42'
        },
    
        'Cecil': {
            'phone': '3158',
            'addr': 'Baz avenue 90'
        }
    
    }
    
    # Descriptive labels for the phone number and address. These will be used
    # when printing the output.
    labels = {
        'phone': 'phone number',
        'addr': 'address'
    }
    
    name = raw_input('Name: ')
    
    # Are we looking for a phone number or an address?
    request = raw_input('Phone number (p) or address (a)? ')
    
    # Use the correct key:
    if request == 'p': key = 'phone'
    if request == 'a': key = 'addr'
    
    # Only try to print information if the name is a valid key in
    # our dictionary:
    if name in people: print "%s's %s is %s." % 
        (name, labels[key], people[name][key])

    字典方法

      1. clear:清除字典中的所有项。
        x.clear()
      2. copy:浅复制字典。
        y=x.copy()
      3. deepcopy:同样是复制,来看看和copy的区别。
        from copy import deepcopy
        d={}
        d['names']=['as','sa']
        c=d.copy()
        dc=deepcopy(d)
        d['names'].append('ad')

    fromkeys:给指定的键建立新的字典,每个键默认对应的值为none.

    {}.fromkeys(['name','age'])

    get:更为宽松的访问字典项的方法。

    d.get('name')

    # A simple database using get()
    
    # Insert database (people) from Listing 4-1 here.
    
    labels = {
        'phone': 'phone number',
        'addr': 'address'
    }
    
    name = raw_input('Name: ')
    
    # Are we looking for a phone number or an address?
    request = raw_input('Phone number (p) or address (a)? ')
    
    # Use the correct key:
    key = request # In case the request is neither 'p' nor 'a'
    if request == 'p': key = 'phone'
    if request == 'a': key = 'addr'
    
    # Use get to provide default values:
    person = people.get(name, {})
    label = labels.get(key, key)
    result = person.get(key, 'not available')
    
    print "%s's %s is %s." % (name, label, result)

    has_key:检查字典中是否含有给定的键。d.haos_key()。值返回True ,False。

    items:将所有字典项目一列表方式返回。

    iteritems:方法大致相同,但是会返回一个迭代器而不是列表。

    keys:将字典中的键以列表的方式返回。(注意区分和items的区别)

    iterkeys:返回针对键的迭代器。

    pop:获得对应给定键的值,然后将键-值对删除。

    popitem:弹出一个随机的项,

    setdefault:既能获得与给定键相关的值,又能在字典中不含有该键的情况下设定相应的键值。

    update:用一个字典更新另一个字典。

    d={'1':'d','2':'s','3':'a'}
    x={'1','jk'}
    d.update(x)

    values:以列表的形式返回字典中的值。

    itervalues:返回值得迭代器。

  • 相关阅读:
    JMeter一台机器可以支持多大的并发量
    apache遇到的权限以及其他一些问题
    高级运维要学习的知识
    运维学习的博客网站
    bind的各个记录的详解
    gdb的安装与使用
    CentOS6.x机器安装Python2.7.x
    centos7搭建nginx+uwsgi运行django环境
    学会数据库读写分离、分表分库——用Mycat,这一篇就够了!我转的
    linux运维、架构之路-xtrabackup
  • 原文地址:https://www.cnblogs.com/chengxuyuanxiaowang/p/3784789.html
Copyright © 2020-2023  润新知