- 用
in
关键字检查key
是否存在
if 'name' in d:
pass
- 用
get
获取字典中的值
print(d.get("name", "default"))
- 用
setdefault
为字典中不存在的key
设置缺省值
data = [
("animal", "bear"),
("animal", "duck"),
("plant", "cactus"),
("vehicle", "speed boat"),
("vehicle", "school bus")
]
groups = {}
for (key, value) in data:
groups.setdefault(key, []).append(value)
- 用
defaultdict
初始化字典对象
from collections import defaultdict
groups = defaultdict(list)
for (key, value) in data:
# 当key不存在于字典中时,list函数将被调用并返回一个空列表赋值给d[key]
groups[key].append(value)
- 用
fromkeys
将列表转换成字典
keys = {'a', 'e', 'i', 'o', 'u' }
value = []
d = dict.fromkeys(keys, value)
print(d)
- 用字典实现
switch ... case
语句
data = {
0: "zero",
1: "one",
2: "two",
}
data.get(arg, "nothing")
- 使用
iteritems
迭代字典中的元素
d = {
0: "zero",
1: "one",
2: "two",
}
for k, v in d.items():
print(k, v)
- 使用字典推导式
numbers = [1, 2, 3]
d = {number: number * 2 for number in numbers}
-
list
操作
# deque 是一个双向队列的数据结构,删除元素和插入元素会很快
from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger',
'betty', 'melissa', 'judith', 'charlie'])
names.popleft()
names.appendleft('mark')
-
list
深拷贝
arr = list()
# 模块
from copy import deepcopy
c_arr = deepcopy(arr)
# 切片
b_arr = arr[:]
-
dict
生成
def key_value_gen(k):
yield chr(k+65)
yield chr((k+13)%26+65)
d = dict(map(key_value_gen, range(26)))
-
iter()
可接收callable
参数
def random_num():
return randint(0,10)
# iter第一个参数必须是可调用的对象,用于不断调用,产出各个值
# 第二个值是哨符,这是个标记值,当可调用的对象返回这个值时, 触发迭代器抛出StopIteration异常,而不产出哨符
num = iter(random_num, 0)
for i in num:
print(i)
- 动态地创建新类型
# type的第一个参数就是类名,第二个参数是继承的父类,第三个参数是类的属性
>>> NewType = type("NewType", (object,), {"x": "hello"})
>>> n = NewType()
>>> n.x
"hello"
- 字典的get()和setdefault()方法
d = {'key':123}
# 使用的d.get('key'),key不存在时它返回的是None,可用第二个参数0取代返回的None
v = sum.get('<key_name>', 0)
# 如果字典中存在key,那么就直接返回d[key],否则设置d[key]=value
# 先查询键名,如存在就返回其值,否则直接给其键名赋值
v = d.setdefault('<key_name>',456)
-
collections.Counter
是dict
的子类,用来统计可哈稀对象
>>> cnt = Counter('helloworld')
>>> cnt
Counter({'l': 3, 'o': 2, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1})
>>> cnt['l']
3
>>> cnt['x'] = 10
>>> cnt.get('y')
网友评论