python3|python3 高效使用Python字典、列表

  1. in关键字检查key是否存在
if 'name' in d: pass

  1. get获取字典中的值
print(d.get("name", "default"))

  1. setdefault为字典中不存在的key设置缺省值
data = https://www.it610.com/article/[ ("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus") ] groups = {} for (key, value) in data: groups.setdefault(key, []).append(value)

  1. defaultdict初始化字典对象
from collections import defaultdictgroups = defaultdict(list) for (key, value) in data: # 当key不存在于字典中时,list函数将被调用并返回一个空列表赋值给d[key] groups[key].append(value)

  1. fromkeys将列表转换成字典
keys = {'a', 'e', 'i', 'o', 'u' } value = https://www.it610.com/article/[] d = dict.fromkeys(keys, value) print(d)

  1. 用字典实现switch ... case语句
data = https://www.it610.com/article/{ 0:"zero", 1: "one", 2: "two", } data.get(arg, "nothing")

  1. 使用iteritems迭代字典中的元素
d = { 0: "zero", 1: "one", 2: "two", } for k, v in d.items(): print(k, v)

  1. 使用字典推导式
numbers = [1, 2, 3] d = {number: number * 2 for number in numbers}

  1. list 操作
# deque 是一个双向队列的数据结构,删除元素和插入元素会很快 from collections import deque names = deque(['raymond', 'rachel', 'matthew', 'roger', 'betty', 'melissa', 'judith', 'charlie']) names.popleft() names.appendleft('mark')

  1. list 深拷贝
arr = list() # 模块 from copy import deepcopy c_arr = deepcopy(arr) # 切片 b_arr = arr[:]

  1. dict 生成
def key_value_gen(k): yield chr(k+65) yield chr((k+13)%26+65) d = dict(map(key_value_gen, range(26)))

  1. iter()可接收callable参数
def random_num(): return randint(0,10) # iter第一个参数必须是可调用的对象,用于不断调用,产出各个值 # 第二个值是哨符,这是个标记值,当可调用的对象返回这个值时, 触发迭代器抛出StopIteration异常,而不产出哨符 num = iter(random_num, 0) for i in num: print(i)

  1. 动态地创建新类型
# type的第一个参数就是类名,第二个参数是继承的父类,第三个参数是类的属性 >>> NewType = type("NewType", (object,), {"x": "hello"}) >>> n = NewType() >>> n.x "hello"

  1. 字典的get()和setdefault()方法
d = {'key':123} # 使用的d.get('key'),key不存在时它返回的是None,可用第二个参数0取代返回的None v = sum.get('', 0) # 如果字典中存在key,那么就直接返回d[key],否则设置d[key]=value # 先查询键名,如存在就返回其值,否则直接给其键名赋值 v = d.setdefault('',456)

  1. collections.Counterdict的子类,用来统计可哈稀对象
>>> 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')

    推荐阅读