python-dict相关

用了很久的python,但是对python的许多特性掌握都不是很熟悉啊,这里进行一下记录好了:

python的字典相关

对字典的排序

对字典进行排序的话,就要利用到sorted函数

1
sorted(one_dic.items(),key = lambda s:s[1],reverse = True)

这个排序函数的key其实是“排序依据”的意思(回调函数),如果有多个值的话就会按照“分发扑克”的权重方式进行排序

OrderedDict

你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序。
使用collections中的OrderedDict模块来完成相关文档
collections中包含了很多特殊化处理过的python的容器-dict,list,set 和 tuple。
OrderedDict会记录下键值进入当前字典的顺序

1
2
3
4
5
6
7
8
>>> d = {'book':3, 'apple':4, 'key':14}
>>> t = OrderedDict(sorted(d.items(), key = lambda k:k[1]))
>>> t
OrderedDict([('book', 3), ('apple', 4), ('key', 14)])
>>> t['flags'] = 4
>>> t
OrderedDict([('book', 3), ('apple', 4), ('key', 14), ('flags', 4)])

4.有个特别的字典叫做defaultdict,其作用相当于是【当字典里不存在对应的变量的时候,会调用默认的函数对对应的键赋值。

1
2
3
4
5
6
7
8
9
>>> from collections import defaultdict
>>> def default_call():
return 's'

>>> d = defaultdict(default_call)
>>> d
defaultdict(<function default_call at 0x000000000123ED90>, {})
>>> d[1]
's'

字典中删除重复的对象

假设字典为

1
2
3
4
5
6
7
8
9
z = {
1: 'a',
2: 'a',
3: 'a',
4: 'b',
5: 'c',
6: 'c',
7: 'd'
}

如何将重复的值去掉呢(指只有abc)
解答:由于dict本身每个键都是唯一的,所以这里我们可以使用dict自身来帮助我们实现唯一

1
dict([(x, y) for y, x in z.items()])

此时返回的字典即为拥有唯一键值的dict