【Python】字典

少女dtysky

世界Skill

时刻2014.06.22

Python中的字典是最为强大的数据类型,你几乎可以用它做任何事情(当然他仅仅是一种数据类型,不要要求太高了)。


1.形式:

至于在python里字典是如何实现的就不废话了,有兴趣的可以去找字典和哈希表的关系,这里指讲一些实用的东西。
首先说明,字典是无序的。

字典的构造形式如下:

d={
    key1: value1,
    key2: value2
}

其中keyn为键,valuen为键所对应的值,显而易见,二者是成对的关系。
注意,在写的时候你并不能由于让他显得好看而这么写:

d=
{
    key1: value1,
    key2: value2
}

当然如果有兴趣完全可以尝试一下ww。


2.构造:

字典无疑是强大的,他可以让你用任何类型(无论它是数值、字符串,还是函数、对象),进行索引,索引返回的值也可以是任何的类型。
这也就是说,我们完全可以构造一个以下的字典:

class a():
    def __init__(self):
        print '1'
A=a()
>>>1
def xx():
    print '1'
d={
    1:'1',
    'a':'a',
    A:xx,
    xx:A
}

这个字典包含了以下信息:
键1(整型)对应值'1'(字符串)
键'a'(字符串)对应值'a'(字符串)
键A(对象)对应值xx(函数)
键xx(函数)对应值A(对象)

当然,我们也可以这么做:

d={
    'a':[1,A,xx],
    'b':{
            '1':1
        }
    }

列表和字典同样没有任何问题。


3.方法:

字典常用的方法无非是索引、列举、添加、删除、排序。

1.索引:

索引有两种方式,一种是常用的做法:

d['1']

这句话会返回键'1'对应的值。
虽然常用,但这个方法会在某些情况下出现问题——当键值不存在的状况下,此方法会报错。
这里就会用到另一种方法:

d.get('1')

这个方法当键不存在的状况下会返回None。

2.列举:
有三个方法直接列举出字典里的内容(当然用for也可以):

第一个方法为:

d.items()

此方法返回一个列表,列表里有若干元祖,每一个元祖内为一对键和值。

第二个方法为:

d.keys()

此方法返回一个列表,列表由键构成。

第三个方法为:

d.values()

同上,不过返回的是值而不是键。

3.添加:

有时候需要向字典内添加一对键值,方法很简单,如下:

d[newkey]=newvalue

如此便添加了一对键值newkey:newvalue。

4.删除:

如果想要删除一对键值,如此即可:

del d['a']

如果想要一次清空字典,可使用:

d.clear()

5.排序:

由于字典是无须的,所以可能在一些需要顺序的时候带来麻烦,这样就要求我们去对它排序,一般以下方法即可:

sorted(d)

默认按照键升序排列,字符串按照ascii码处理。
如果想指定值排序或者降序,可以使用:

sorted(d,key=lambda d: d[0],True)

第一个参数是要排序的字典,第二个参数key是排序指定的对象,后面跟了一个lambda表达式,对于字典d[0]为键,d[1]为值,最后一个属性指定升序还是降序,默认False,升序。


4.应用:

一个例子:

#建立空字典
d={}

#添加键值:
d['ch1']=['name','color']

#更新值:
A=CH()
d['ch1'].append(A)

#使用值内对象:
print d['ch1'][2].name

#删除键值:
del d['ch1']

#删除字典:
del d

如果不是自己的创作,少女是会标识出来的,所以要告诉别人是少女写的哦。