Python for Data Analysis (8)

来源:互联网 发布:分水岭算法 过分割 编辑:程序博客网 时间:2024/06/05 06:48

字典

#update方法,一个字典可以被合并到另一个字典中去:d1={1:'a',2:'b'}d1.update({3:'c',4:'d'})d1
dict(zip(range(4),reversed(range(5))))
d1.get(1)

默认值!!

1.

一个常见的逻辑:

if key in some_dict:
value=some_dict[key]
else:
value=default_value

#可以简化成value=some_dict.get(key,default_value)

2.

words={'apple','bat','bar','atom','book','momo'}by_letter={}for word in words:    letter=word[0]    if letter not in by_letter:        by_letter[letter]=[word]    else:        by_letter[letter].append(word)by_letter
{'a': ['apple', 'atom'], 'b': ['bat', 'bar', 'book'], 'm': ['momo']}
#利用setdefault方法,让上面的if-else块可以写成:by_letter.setdefault(letter,[]).append(word)
#还有简化方法collection模块中的一个defaultdict的类from collections import defaultdictby_letter=defaultdict(list)for word in words:    by_letter[word[0]].append(word)by_letter
defaultdict(list,            {'a': ['apple', 'atom'],             'b': ['bat', 'bar', 'book'],             'm': ['momo']})

defaultdict的初始化器只需要一个可调用对象(例如各种函数),并不需要明确的类型。因此,如果要将默认值设置为4,只需要传入一个能够返回4的函数即可:

counts=defaultdict(lambda:4)counts
defaultdict(<function __main__.<lambda>>, {})

字典的哈希性

虽然字典的值是可以是任何Python对象,但键必须是不可变对象,这里描述为可哈希性,可以用hash函数来验证

hash('string')
-9167918882415130555
hash([13,3])#列表是可以变的,如果一定要用列表,就转变它为元组
---------------------------------------------------------------------------TypeError                                 Traceback (most recent call last)<ipython-input-20-d7b46a358c61> in <module>()----> 1 hash([13,3])#列表是可以变的,如果一定要用列表,就转变它为元组TypeError: unhashable type: 'list'
0 0
原创粉丝点击