dict基本使用
以一个例子开始:统计一个列表里各单词重复次数
1 | words = ['hello', 'world', 'nice', 'world'] |
这样写肯定会报错的,因为各词的个数都没有初始值,引发KeyError
第二种方式1
2
3
4
5
6
7
8
9
10
11word=["hello","world","my","friend","my"]
result=dict()
for key in word:
if key in result.keys():
value = result.get(key)+1
else:
value=1
result[key]=value
for key,value in result.items():
print("key is {},value is {}".format(key,value))
使用setdefault()方法设置默认值1
2
3
4
5word=["hello","world","my","friend","my"]
result=dict()
for key in word:
result.setdefault(key,0)
result[key] +=1
setdefault(),需提供两个参数,第一个参数是键值,第二个参数是默认值,每次调用都有一个返回值,如果字典中不存在该键则返回默认值,如果存在该键则返回该值,利用返回值可再次修改代码。
1 | word=["hello","world","my","friend","my"] |
如何使用defaultdict
defaultdict接受一个工厂函数作为参数,如下来构造:
1 | dict =defaultdict( factory_function) |
这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串,set对应set( ),int对应0,如下举例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19from collections import defaultdict
dict1 = defaultdict(int)
dict2 = defaultdict(set)
dict3 = defaultdict(str)
dict4 = defaultdict(list)
dict1[2] ='two'
print(dict1[1])
print(dict2[1])
print(dict3[1])
print(dict4[1])
输出:
0
set()
[]
1 | >>> from collections import defaultdict |
最终代码:1
2
3
4
5
6from collections import defaultdict
words = ['hello', 'world', 'nice', 'world']
#使用lambda来定义简单的函数
counter = defaultdict(lambda: 0)
for kw in words:
counter[kw] += 1
dict其他函数
1 | seq = ('Google', 'Runoob', 'Taobao') |
1 | l1=["a","b","c"] |
1 | dict = {'Name': 'Zara', 'Age': 7} |