我曾经听到这么一个故事: 一个年轻的程序员问一个老程序员(一个比较牛逼的公司的CTO) 年轻程序员: 你为什么这么牛X., 就好像没有你不会的。老程序员: 积累的。年轻程序员: 怎么才能积累到您的程度呢。我每天都在积累。但是似乎都没有感觉到进步。老程序员: 我从20岁开始做到了一件事情,直到今天,而且尽可能地保证不间断。年轻程序员: 到底是什么? 老程序员: 我每天保证自己有2个小时在学习新的东西。

python 字典函数

上一篇 / 下一篇  2010-09-27 22:20:13

 
dictionary也有自己的专属函数。
  • D.keys() #返回一个包含所有key的list
  • D.values() #返回一个包含所有值的list
  • D.items() #返回一个以(key:value)为成员的list
  • D.get(k[, x]) For example D.get('key','None')
    #取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 ... in ...的方式来遍历一个list,其实这种方式也可以用来遍历一个dictionary。dictionary是由key:value组成的,那么:
  • for x in D
  • x每次取的值是什么呢?先来看几个函数:
  • D.iterkeys()
  • D.itervalues()
  • D.iteritems()

这三个函数均返回一个iterator对象,分别是keys\values\items的iterator。可以用在for循环中。比如:

  • for x in D.iterkeys()

上面说到的for x in D实际上就是这种形式的简写,x遍历的是keys。如果要遍历values,也很简单只要把D.iterkeys()改为D.itervalues()就可以了。iteritems()也类似。在iterator对象中有一个next()的方法,可以像for一样,一次一次的调用next()方法,可以遍历iterator中的数据。


TAG:

 

评分:0

我来说两句

Open Toolbar