Python小技巧(1)--基本数据结构与算法 Posted on 2022-08-30 Edited on 2025-06-17 In python技巧 Valine: 基本数据结构与算法----来源于cookbook第一章 记录第一章中比较有意思的部分 元素分解 通过*表达式来解包裹实现分解 123456l = [1,2,3,4,(5,6,7)]first, *_, (*__, last) = lprint(first,last) # 1 7 将字典的键映射到多个值上 通过使用collections中的defaultdict来实现一键多值字典通过dict类的setdefault方法来实现 12345678910111213141516171819# 方法一from collections import defaultdictd = defaultdict(list) # 或defaultdict(set)d['a'].append(1)d['a'].append(2)d['b'].append(3)print(d) # {'a': [1, 2], 'b': [3]}# 方法二d = {}d.setdefault('a',[]).append(1)d.setdefault('a',[]).append(2)d.setdefault('b',[]).append(1)print(d) # {'a': [1, 2], 'b': [3]} 两个字典的集合运算 字典支持集合运算符,可以对其求交集、并集等 1234567891011121314151617a = { 'x' : 1, 'y' : 2, 'z' : 3}b={ 'x' : 10, 'w' : 11, 'z' : 3}print(a.keys() & b.keys()) # {'z', 'x'}print(a.keys() - b.keys()) # {'y'}print(a.items() & b.items()) # {('z', 3)} 字典推导式 感觉字典推导式不如生成器推导式和列表推导式用的多 12345678910prices = { 'a' : 45, 'b' : 32, 'c' : 10}p1 = {key:value for key,value in prices.items() if value >20}print(p1) # {'a': 45, 'b': 32}