0. 翻转字典(reverse_dict)
word_index = imdb.get_word_index()
reverse_word_index = dict([(index, word) for (word, index) in word_index.items()])
# word_index 必须是一一对应的,才可将 key,value进行翻转
1. get
注意以下两种形式的细微差别,差别在返回值的类型上:
d.get(value, '')
d.get(value, [''])
>> d = {}
>> d.get(value, '')
''
>> d.get(value, [''])
['']
2. update:字典更新
x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
此时如果我们想通过字典 y 更新字典 x,以得到新的字典 z = {'a': 1, 'b': 3, 'c': 4}
,如果使用字典的成员方法(update)方法,update 方法没有返回值,且其对字典的修改是 in-place 的,就像 list 的 append、extend 方法一样。一种简洁的解决方案如下:
z = {**x, **y}
关于 **x, **y
其实是对关键字参数的收集和展开,在 Python 的编程风格里,关键字参数等同于字典。详见 python 进阶 —— 可变参数(*args, **kw)与参数收集的逆过程
传统方式:
z = x.copy()
z.update(y)
3. 字典加和
def union_dic(*objs):
_keys = set(sum([obj.keys() for obj in objs],[]))
_total = {}
for _key in _keys:
_total[_key] = sum([obj.get(_key,0) for obj in objs])
return _total
如果是 Python 3:
def union_dic(*objs):
_keys = set(sum([list(obj.keys()) for obj in objs],[]))
_total = {}
for _key in _keys:
_total[_key] = sum([obj.get(_key,0) for obj in objs])
return _total