beginning python summary chapter 4 - 字典

1、Python之中唯一内建的映射类型就是字典(Dictionary)。字典中的值并没有特殊的顺序,但是都按照关键字(Key)进行存储,关键字可以是数字、字符串,甚至是元组(Tuple)。

2、字典的语法:字典名 = {'键keys':'值vaules','键keys':'值vaules','键keys':'值vaules',...},字典中包含很多对(称为条目items),由(keys)和它们相对应的值(Values)组成,每个键和值之间用冒号(:)隔开,条目之间以逗号(,)相隔,而整个字典是由一对花括号括起,空字典(没有任何项目)由两个花括号组成,像这样:{}。

     note:字典中的键是唯一的(其他类型的映射也是如此),而值则不然。

3、字典函数:你可以用字典函数从其他映射(比如其他字典)或者(键,值)的序列建立字典。eg:>>> items = [('name', 'Gumby'), age', 42)]   >>> d = dict(items)   >>> d   {'age': 42, 'name': 'Gumby'}    >>> d['name']   'Gumby'

     它可以带有关键词参数使用,如下:
      >>> d = dict(name='Gumby', age=42)
      >>> d
      {'age': 42, 'name': 'Gumby'}

4、基本字典操作:len(d)返回d中条目(键-值)的数量, d[k]返回关联到键k上的值,d[k]=v将值v关联到关键字k上,del d[k]删除拥有键k的条目,k in d检查d中是否含有键k。eg:>>>len(d) 2  >>>d['age']  42   >>>d['age'] = 21  >>>'age' in d    true  >>>del d['age'].

     字典的键不一定为整数,可为任何类型,比如字符串或元组,浮点数。

     你可以关联一个值到一个键上面,就算那个键不存在于字典中,这种情况下新的条目会建立。你不能将值关联到列表范围内不存在的索引(index)上。

     表达式k in d(d为字典)用来查找键,而不是值。表达式v in l(l为列表)则用来查找值,而不是索引。

5、用字典格式化字符:在每个转换说明(conversion specifier)中的%字母后面,你可以加上键(用圆括号括住),后面跟上其他说明元素。eg:>>>"gumby's age is %(age)s." % d.

6、字典方法:clear方法清楚字典中的所有条目,无返回值。eg:>>>d.clear()。

     x和y关联于同一个字典,如果用关联一个新字典的方法清空x或y的话,对y或x没有影响,它还是关联到原来的字典。用clear方法可以清空原始字典的所有元素,x和y都被清空了。

 

                    copy方法返回一个具有相同键-值配对的字典。

eg:>>> x = {'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
>>> y = x.copy()
>>> y['username'] = 'mlh'
>>> y['machines'].remove('bar')
>>> y
{'username': 'mlh', 'machines': ['foo', 'baz']}
>>> x
{'username': 'admin', 'machines': ['foo', 'baz']}

在拷贝中替换值的时候,原始字典不受影响,如果你修改了某个值(内部修改,而不是替换),原始的字典也会改变。

深拷贝可以解决上述问题,eg:>>>z = deepcopy(x)。

       fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None。eg:>>> {}.fromkeys(['name', 'age'])  {'age': None, 'name': None}

     可以直接在所有字典的类型dict上面调用方法。eg:>>> dict.fromkeys(['name', 'age']) {'age': None, 'name': None}

     如果你不想使用None作为默认值,也可以自己提供默认值。eg:>>> dict.fromkeys(['name', 'age'], '(unknown)')
{'age': '(unknown)', 'name': '(unknown)'}。

       get方法是个更宽松的访问字典条目的方法。当你试图访问一个不存在的键时,你得到了None值。你可以自定义“默认”值,替换None:>>> d.get('name', 'N/A')   'N/A'。

       has_key方法可以检查字典中是否含有给出的键,相当于 k in d,eg:d.has_key('name')  True。

       items方法将所有的字典条目以列表方式返回,每个元素的形式为(键,值)。但是条目的返回并没有特殊的顺序。

       iteritems方法使用方法也类似,但是会返回一个迭代(iterator)对象而不是列表。

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

       pop方法用来获得对应于给定键的值,然后将这对键值从字典中移除。eg:>>>d.pop('name')。

       popitem方法弹出随机的条目。>>>d.popitem()。

       setdefault方法某种程度上类似于get,setdefault还能在字典中不含有给定键的情况下设定相应的键值。eg:>>>d = {}   >>>d.setdefault('name','no')。如果不设定,会默认使用None。>>>d.setdefault('age') 

       update方法可以利用一个字典的条目更新另外一个字典,提供条目的字典会被添加到旧的字典中,若有相同的键则会进行覆盖。eg:>>>d.update(x)
values方法以列表的形式返回字典中的值(itervalues返回值的迭代)。和keys不同,以列表形式返回的值可以有重复。eg:>>>d.values()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值