zoukankan      html  css  js  c++  java
  • python中字典的几个方法介绍

    创建字典

    >>> phonebook={'Alice':'2897','Alan':'0987','Jery':'6754'}

    dict函数

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

    基本的字典操作(大部分与序列类似)

    • len(d)返回d中项(键-值对)的数量
    • d[k]返回关联到键k上的值
    • d[k]=v将值v关联到k上
    • del d[k]删除键为k的项
    • k in d检查d中是否有含有键为k的项

    格式化字符串

    >>> phonebook
    {'Jery': '6754', 'Alice': '2897', 'Alan': '0987'}
    >>> "Alan's phone number is %(Alan)s." % phonebook
    "Alan's phone number is 0987."

    方法:

    clear 清除字典中所有的项

    >>> d={}
    >>> d['name']='Gumby'
    >>> d['age']=42
    >>> d
    {'age': 42, 'name': 'Gumby'}
    >>> d.clear()
    >>> d
    {}
    
    >>> x={}
    >>> y=x #x和y对应同一个字典
    >>> x['key']='value'
    >>> y
    {'key': 'value'}
    >>> x={} #x关联到新的空字典
    >>> y
    {'key': 'value'}
    
    >>> x={}
    >>> y=x
    >>> x['key']='value'
    >>> y
    {'key': 'value'}
    >>> x.clear()
    >>> y
    {}

    copy 返回一个具有相同键-值对的新字典(浅复制)

    >>> x={'name':'admin','machines':['foo','bar','bax']}
    >>> y=x.copy()
    >>> y['name']='yhk' #替换值,原字典不受影响
    >>> y['machines'].remove('bar') #修改了某个值(原地修改不是替换),原字典会改变
    >>> y
    {'name': 'yhk', 'machines': ['foo', 'bax']}
    >>> x
    {'name': 'admin', 'machines': ['foo', 'bax']}

    deepcopy 深复制

    >>> from copy import deepcopy
    >>> d={}
    >>> d['name']=['Aly','Bob']
    >>> c=d.copy()
    >>> e=deepcopy(d)
    >>> d['name'].append('Ageal')
    >>> c
    {'name': ['Aly', 'Bob', 'Ageal']}
    >>> e
    {'name': ['Aly', 'Bob']}

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

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

     get 访问字典项

    >>> d={}
    >>> print d['name']
    
    Traceback (most recent call last):
      File "<pyshell#60>", line 1, in <module>
        print d['name']
    KeyError: 'name'
    >>> print d.get('name')
    None
    >>> d.get('name','N/A')
    'N/A'
    >>> d['name']='Eric'
    >>> d.get('name')
    'Eric'

    has_key 检查字典中是否有给出的键(python3.0没有这个函数)

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

    items和iteritems 

    items将所有的字典项以列表方式返回,这些列表项中的每一项都来自于(键,值)

    iteritems返回一个迭代器对象

    >>> d={'title':'My Time!','url':'http://www,python.org','spam':0}
    >>> d.items()
    [('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]
    >>> s=d.iteritems()
    >>> s
    <dictionary-itemiterator object at 0x0000000003068728>
    >>> list(s)
    [('url', 'http://www,python.org'), ('spam', 0), ('title', 'My Time!')]

    keys和iterkeys keys将字典中的键以列表形式返回 iterkeys返回针对键的迭代器

    pop 移除

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

     popitem 移除随机的项

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

     setdefault 当键不存在时,返回默认值并更新相应字典

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

    update 利用一个字典项更新另外一个字典

    >>> d={'x':1,'y':2,'z':3}
    >>> f={'y':5}
    >>> d.update(f)
    >>> d
    {'y': 5, 'x': 1, 'z': 3}

    values和itervalues  alues返回字典中的值(itervalues返回值的迭代器)

    >>> d={}
    >>> d[1]=1
    >>> d[2]=2
    >>> d[3]=3
    >>> d.values()
    [1, 2, 3]
  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/nsds/p/6437553.html
Copyright © 2011-2022 走看看