我以为我dict用的很熟了,但是真正再去用的时候发现还是底子太薄,太多地方容易出错了;
- dict的创建:
d = dict()
# or 更简单
d = {}
这样创建了一个新的dict,不包含任何key,value
- dict的插入和赋值:
如果我不知道一个dict对象里是否有dict[key]的话,我要先判断一下:
用has_key()
返回boolean变量
if d.han_key('key'):
#do something...
一个例子:
比如说我有一个list,里面有重复的元素,我要统计所有元素出现的次数
list = [1,2,2,3,4,2,3,3]
d = dict()
for element in list:
if d.has_key(element):
d[element] += 1
else:
d[element] = 1
- dict的遍历:
一种简单的方法吧,Python2.7
是这么用,记住一种就好
for k,v in dict.iteritems():
print '%s:%s' % (k, v)
其中iteritems()
返回了一个dictionary-itemiterator object
相比items()
返回的就是一个list, list的每个元素为一个tuple, 如:
[('a', 1), ('b', 2)]
- dict的排序:
排序,其实是将dict里的元素都转化到一个list, list的每个元素为一个tuple;然后对这个list进行操作。
我仔细想了一下,dict排序有意义吗?我意思是我致力于去实现我把所有的元素排完序再放回去是有序的,这个本身是不现实的,因为dict的创建和维护并不是按照连续的内存,而是哈希的。
所以我们只能得到一个有序的list,无法得到一个有序的dict
所以如果知道排序的思想,用items()
抽出来,再对list排序就好了。