python(9): dictionary
时间:2006-02-24 来源:newsim
在python的mapping大类型中dictionary是唯一的内置类型。与list和string等sequence相比,dictrionary的最大特点是它的成员没有顺序之说。除此之外,对dictionary成员的访问是通过key来进行的,而不是像list一样,通过index来进行。不过,dictionary与list也有相同之处,它们都是可变的。tuple则正好相反,是不可变的、有顺序的。
dictionary的表示方式为:
下面来看看对dictionary的操作。首先计算一个dictionary中有多少个key:value组用len()。由于dictionary是没有顺序的,所以+ * 分片等操作对于dictionary来说是非法的。访问dictionary的成员必须通过D[key]的方式。下面来看例子:
与list和string类似,dictionary也有自己的专属函数。
dictionary的表示方式为:
- {key1:value1, key2:value2, key3:value3...}
下面来看看对dictionary的操作。首先计算一个dictionary中有多少个key:value组用len()。由于dictionary是没有顺序的,所以+ * 分片等操作对于dictionary来说是非法的。访问dictionary的成员必须通过D[key]的方式。下面来看例子:
- >>> D = {'one':1, 'two':2}
- >>> D['one']
- 1
- >>> D['one'] = 0
- >>> D
- {'one':0, 'two':2}
- >>> D['three'] = 3
- >>> D
- {'one':0, 'two':2, 'three':3}
与list和string类似,dictionary也有自己的专属函数。
- D.keys() #返回一个包含所有key的list
- D.values() #返回一个包含所有值的list
- D.items() #返回一个以(key:value)为成员的list
- D.get(k[, x])
#取D[k]的值,如果没有分键k,则返回x。如果k没有,x也没有提供则返回None。注意即使k不存在,D也没有改变,并不会把k:x加到D中。 - D.setdefault(k[,x])
#与get()一样,会返回D[k]。但如果k没有,k:x这个成员会被添加到D中。返回x - D.clear() #清除D中的内容
- D.copy() #返回一个新的dictionary,它是D的拷贝
- D.pop(k[,x]) #与setdefault()类似。在返回D[k]的同时,会把k:value这个成员删除,D会改变。如果没有提供x,而且k又不存在,会出现一个KeyError
- D.popitem() #在D返回一个key:value对,然后在D中删除它
- D.update([b]) #应用b的值,来更新D。b可以是其他的mapping类型,也可以是遍历时每次取出的是一个只有两个成员的tuple的类型,比如:[(1,'one'), (2:'two')],这个list在遍历时,取出的值是(1,'one')和(2, 'two')。还可以用"key=value,..."这样的参数。有一个zip()内置函数在这里特别有用,zip(seq1,seq2...)返回一个以tuple为成员的list,第一个tuple包含一个seq1的第一个值,seq2的第一个值...。
- D.fromkeys(seq[,value]) #以seq为keys,创建一个新dictionary,如果没有提供value,则各key的值为None。注意这里会创建一个新dictionary,而不是改变原来的dictionary,如果要用原来的符号标识新dictionary,应该用D=D.fromkeys(k)的形式。
- for x in D
- D.iterkeys()
- D.itervalues()
- D.iteritems()
- for x in D.iterkeys()
相关阅读 更多 +