Python - 字典的使用优化和应用技巧
2019-04-09 10:41
555 查看
目录
一、zip() 对字典实现键值反转
!! 注意:zip函数返回一个迭代器,即内容只能消费一次!
[code]prices = {'a': 1, 'b': 123, 'c': 111, 'd': 555, 'e': 4} # !!注意,zip函数返回一个迭代器,即内容只能消费一次 zip_prices = zip(prices.values(), prices.keys()) print(zip_prices) # <zip object at 0x0000021E64AC9E88> list_prices = [] for i in zip_prices: list_prices.append(i) print(list_prices) # [(1, 'a'), (123, 'b'), (111, 'c'), (555, 'd'), (4, 'e')] # 由于一次性消费,所以必须再次初始一次 zip_prices = zip(prices.values(), prices.keys()) # 返回根据原来的vlaue值返回最小的对象 min_price = min(zip_prices) print(min_price) # (1, 'a') # 返回根据原来的vlaue值返回最大的对象 zip_prices = zip(prices.values(), prices.keys()) max_price = max(zip_prices) print(max_price) # (555, 'd') # 若,字典内存在多个相同value值的键值对,那zip会更具key为排序依据 prices = {'a': 1, 'b': 1, 'c': 555, 'd': 555, 'e': 4} print(min(zip(prices.values(), prices.keys()))) # (1, 'a') print(max(zip(prices.values(), prices.keys()))) # (555, 'd')1-1 zip() 基于元组、列表实现字典
[code]def get_dict(result, *args): print(result) # ('ARCRY',) print(*args) # ['name'] print(dict(zip(*args, result))) # {'name': 'ARCRY'} print(zip(*args, result)) # <zip object at 0x00000192979E9D88> print(dict(zip(result, *args))) # {'ARCRY': 'name'} return dict(zip(*args, result)) # ------------ def get_dict(result, *args): return dict(zip(*args, result)) res = get_dict(('ARCRY',), ['name']) # {'name': 'ARCRY'} get_dict(('ARCRY','aaaa'), ['name','2222']) # {'name': 'ARCRY', '2222': 'aaaa'}
二、字典的集合操作,获取两个字典对象的相同或不同
注意!字典的value对象不支持集合操作!因为无法保证所有值都是唯一的。
[code]a = { 'x': 1, 'y': 2, 'z': 3, } b = { 'x': 3, 'y': 2, 'z': 1, } # & 相同 print(a.keys() & b.keys()) # {'x', 'z', 'y'} # print(a.values() & b.values()) # TypeError: unsupported operand type(s) for &: 'dict_values' and 'dict_values' print(a.items() & b.items()) # {('y', 2)} # - 不同 print(a.keys() - b.keys()) # set() 空集合 # print(a.values() - b.values()) # TypeError: unsupported operand type(s) for -: 'dict_values' and 'dict_values' print(a.items() - b.items()) # {('z', 3), ('x', 1)} # ^ 不同时包含于a和b的元素 print(a.keys() ^ b.keys()) # set() 空集合 # print(a.values() ^ b.values()) # TypeError: unsupported operand type(s) for ^: 'dict_values' and 'dict_values' print(a.items() ^ b.items()) # {('x', 3), ('z', 1), ('x', 1), ('z', 3)} # | a或b中包含的所有元素,去重 print(a.keys() | b.keys()) # {'z', 'x', 'y'} # print(a.values() | b.values()) # TypeError: unsupported operand type(s) for |: 'dict_values' and 'dict_values' print(a.items() | b.items()) # {('x', 3), ('x', 1), ('z', 1), ('z', 3), ('y', 2)}
相关文章推荐
- python技巧 使用值来排序一个字典
- 理解 python metaclass使用技巧与应用场景分析
- 在Python中使用defaultdict初始化字典以及应用方法
- Python 性能优化【2】 -- 高效的使用序列与字典、集合
- Python中使用defaultdict初始化字典以及应用
- 谈谈硬盘的使用维护以及优化技巧(二)
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印
- 使用技巧:共享内存在Java中实现和应用
- ODAC 应用技巧 (一)使用 ODAC 的 Net 方式
- Flex应用开发内存检测及优化技巧
- 在python中使用zookeeper管理你的应用集群
- 全面优化V4.0及AJAX标签使用技巧
- wxWidgets应用--使用方法与技巧连接收藏
- ExtAspNet应用技巧(十一) - Subsonic配置与使用
- 【Silverlight】Bing Maps开发应用与技巧六:使用样式美化图钉(Pushpin)控件的ToolTip外观...
- python技巧31[python中使用enum]
- 使用zend studio开发zend framework应用的技巧
- ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)
- python学习笔记+使用技巧
- Flickr 的开发者的 Web 应用优化技巧 - DBA notes