python进阶(数据结构和算法[三])
来源:互联网 发布:js ascii 编辑:程序博客网 时间:2024/04/30 00:59
在字典上将键映射到多个值上
一键多值字典
d = {'a':[1,2,3], 'b':[4,5]}e = {'a':{1,2,3}, 'b':{4,5}}
可以使用from collections import defaultdict
使用默认字典类,它的一个特点是自动初始化第一个值,后面只需要关注添加元素即可。
from collections import defaultdictd = defaultdict(list)d['a'].append(1)d['a'].append(4)...d = defaultdict(set)d['a'].add(5)...
使用范例:
d = defaultdict(list)for key, value in pairs: d[key].append(value)
让字典保持有序
from collections import OrderedDictd = OrderedDict()d['grok'] = 4d['foo'] = 1d['abr'] = 2for key in d: print(key, d[key])
输出:
grok 4foo 1abr 2
对字典做迭代时,它会严格按照元素初始添加顺序进行。
与字典有关的计算问题
prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}# 利用zip()将字典的键和值反转过来min_price = min(zip(prices.values(), prices.keys()))max_price = max(zip(prices.values(), prices.keys()))print(min_price)print(max_price)# 要排序只要使用sorted函数即可price_sorted = sorted(zip(prices.values(), prices.keys()))for key, value in price_sorted: print(key, value)
输出:
(10.75, 'FB')(612.78, 'AAPL')10.75 FB37.2 HPQ45.23 ACME205.55 IBM612.78 AAPL
我们看一下如果不使用zip()
,效果会怎么样?
prices = { 'ACME': 45.23, 'AAPL': 612.78, 'IBM': 205.55, 'HPQ': 37.20, 'FB': 10.75}print(min(prices)) #只会查找键print(min(prices.values())) # 只查找值,不能映射到键上//附加prices = {'AAA':34, 'BBB':34}print(min(zip(prices.values(), prices.keys()))) #反转之后当值相等的时候,再比较值的大小
在两个字典中寻找相同点
a = { 'x' : 1, 'y' : 2, 'z' : 3}b = { 'w' : 10, 'x' : 11, 'y' : 2}print('Common keys:', a.keys() & b.keys())print('Keys in a not in b:', a.keys() - b.keys())print('(key,value) pairs in common:', a.items() & b.items()
输出:
Common keys: {'y', 'x'}Keys in a not in b: {'z'}(key,value) pairs in common: {('y', 2)}
0 0
- python进阶(数据结构和算法[三])
- python进阶(数据结构和算法[1])
- python进阶(数据结构和算法[二])
- python进阶-数据结构和算法
- Python进阶(三)
- (链表进阶)谈一谈各类算法和数据结构的c++实现以及相关操作的复杂度(三)
- python数据结构与算法 20 递归和递归三定律
- Python进阶强化训练之数据结构与算法进阶
- Python进阶强化训练之数据结构与算法进阶
- python--数据结构和算法
- Python 数据结构和算法
- 数据结构和算法总结(三)
- python 数据结构和算法(一)
- 数据结构(三)算法
- Python进阶(三)Python语法
- 数据结构和算法分析(三) 表、栈和队列
- 数据结构和算法(三):简单栈实现
- js数据结构和算法(三)二叉树
- oc 打印二进制
- MyEclipse导入现成项目出现小红叉错误
- Office在线预览及PDF在线预览的实现方式
- 登陆器
- C++模板学习
- python进阶(数据结构和算法[三])
- A SQLiteConnection object for database '/data/data/.../databases/....db' was leaked!
- scrapy安装问题
- iOS开发--数据类型转换
- DSP
- oracle里面base64加解密
- 搭建nginx下载服务器
- jlink v8 灯不能点亮,也不能写入固件问题的解决
- 理解 JavaScript 作用域和作用域链