返回顶部
首页 > 资讯 > 后端开发 > Python >python字典和集合
  • 556
分享到

python字典和集合

字典python 2023-01-31 06:01:10 556人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

  1. 字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。Python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必

 
  1. 1. 字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。Python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、只含不可变类型元素的元组(1,2,3,’abc’)、实现__hash__()方法的自定义对象(因为__hash__()须返回一个整数,否则会出现异常:TypeError: an integer is required)。可以用hash(obj)检测对象是否是可哈希的。 
  2.  
  3. >>> class HashEnable(object):  
  4. ...    def  __hash__(self):  
  5. ...         return 1 
  6. >>> he = HashEnable()  
  7. >>> hash(he)  
  8. >>> d = {he:1}  
  9. >>> d = {['1',2]:2}  
  10. Traceback (most recent call last): 
  11.    File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list'  
  12.  
  13. 1.1 字典常用操作 
  14. (1)创建字典 
  15.  
  16. >>> d1 = {}  
  17. >>> d2 = {'player':'QVOD','game':'kw'}  
  18. >>> d1,d2 
  19. ({}, {'player': 'QVOD', 'game': 'kw'})    
  20. >>> d3 = dict((['name','alex'],['sex','man']))  
  21. >>> d3  
  22. {'name': 'alex', 'sex': 'man'}  
  23. >>> d33 = d3.copy()  
  24. >>> d33  
  25. {'name': 'alex', 'sex': 'man'}    
  26. >>> d4 = {}.fromkeys(('alex','zhou'),1)  
  27. >>> d4  
  28. {'alex': 1, 'zhou': 1}  
  29. >>> d5 = {}.fromkeys(('alex','zhou'))  
  30. >>> d5  
  31. {'alex': None, 'zhou': None}  
  32.  
  33. (2)遍历字典 
  34. ps:访问一个不存在的key时,会发生KeyError异常,访问前可使用in或not in判断一下。 
  35.  
  36. >>> d = {'name':'alexzhou','sex':'man'}    
  37. >>> for key in d:  
  38. ...     print '%s,%s' %(key,d[key])  
  39. ...   
  40. name,alexzhou  
  41. sex,man    
  42. >>> d['name']  
  43. 'alexzhou' 
  44. >>> d2 = {'name':'alexzhou','age':100}  
  45. >>> print 'name: %s,age: %d' %(d2['name'],d2['age'])  
  46. name: alexzhou,age: 100   
  47. >>> d2['sex']  
  48. Traceback (most recent call last):    
  49.    File "<stdin>", line 1, in <module> KeyError: 'sex'   
  50. >>> 'sex' in d2  
  51. False 
  52. >>> 'name' in d2  
  53. True  
  54.  
  55. (3)更新字典 
  56.  
  57. >>> d = {'name':'alexzhou','age':100}  
  58. >>> d['age'] = 88 
  59. >>> d  
  60. {'age': 88, 'name': 'alexzhou'}  
  61. >>> d.pop('age')  
  62. 88 
  63. >>> d {'name': 'alexzhou'}  
  64. >>> d.clear()  
  65. >>> d  
  66. {}  
  67.  
  68. 1.2 常用内建函数 
  69. (1)cmp() 
  70. 字典的比较:首先是字典的大小,然后是键,最后是值 
  71.  
  72. >>> d1 = {'abc':1,'efg':2}  
  73. >>> d2 = {'abc':1,'efg':2,'h':3}  
  74. >>> cmp(d1,d2)  
  75. -1 
  76. >>> d3 = {'ab':1,'efg':2}  
  77. >>> cmp(d1,d3)  
  78. >>> d4 = {'abc':1,'efg':3}  
  79. >>> cmp(d1,d4)  
  80. -1 
  81. >>> d5 = {'abc':1,'efg':2}  
  82. >>> cmp(d1,d5)  
  83. 0  
  84.  
  85. (2)len() 
  86. 返回键值对的数目 
  87.  
  88. >>> d = {'abc':1,'efg':2} 
  89. >>> len(d)  
  90. 2  
  91.  
  92. (3)keys()、values() 、items() 
  93. keys()返回一个包含字典所有键的列表 
  94. values()返回一个包含字典所有值的列表 
  95. items()返回一个包含键值元组的列表 
  96.  
  97. >>> d = {'name':'alex','sex':'man'}  
  98. >>> d.keys()  
  99. ['name', 'sex']  
  100. >>> d.values()  
  101. ['alex', 'man']  
  102. >>> d.items()  
  103. [('name', 'alex'), ('sex', 'man')]  
  104.  
  105. (4)dict.get(key,default=None) 
  106. 返回字典中key对应的value,若key不存在则返回default 
  107.  
  108. >>> d = {'name':'alex','sex':'man'}  
  109. >>> d.get('name','not exists')  
  110. 'alex' 
  111. >>> d.get('alex','not exists')  
  112. 'not exists'  
  113.  
  114. (5)dict.setdefault(key,default=None) 
  115. 若key存在,则覆盖之前的值,若key不存在,则给字典添加key-value对 
  116.  
  117. >>> d.setdefault('name','zhou')  
  118. 'alex' 
  119. >>> d  
  120. {'name': 'alex', 'sex': 'man'}  
  121. >>> d.setdefault('haha','xixi')  
  122. 'xixi' 
  123. >>> d  
  124. {'haha': 'xixi', 'name': 'alex', 'sex': 'man'}  
  125.  
  126. (6)dict.update(dict2) 
  127. 将字典dict2的键值对添加到dict 
  128.  
  129. >>> d = {'name':'alex','sex':'man'}  
  130. >>> d1 = {'age':100,'address':'shenzhen'}  
  131. >>> d.update(d1)  
  132. >>> d  
  133. {'age': 100, 'address': 'shenzhen', 'name': 'alex', 'sex': 'man'  
  134.  
  135. (7)sorted(dict) 
  136. 返回一个有序的包含字典所有key的列表 
  137.  
  138. >>> sorted(d)  
  139. ['address', 'age', 'name', 'sex']  
  140.  
  141. 2. 集合set 
  142. python中集合对象(set)是一组无序排列的可哈希的值,包含两种类型:可变集合(set)和不可变集合(frozenset),所以set不是可哈希的,frozenset是可哈希的,能当作字典的键。 
  143.  
  144. >>> s = set('a')  
  145. >>> hash(s) Traceback (most recent call last): 
  146. File "<stdin>", line 1, in <module>  
  147. TypeError: unhashable type: 'set'   
  148. >>> fs = frozenset('a')  
  149. >>> hash(fs)  
  150. -1305064881317614714  
  151.  
  152. 2.1 集合常用操作(1)创建集合 
  153.  
  154. >>> s = set('alexzhou')  
  155. >>> s  
  156. set(['a', 'e', 'h', 'l', 'o', 'u', 'x', 'z'])  
  157. >>> fs = frozenset('alexzhou')  
  158. >>> fs  
  159. frozenset(['a', 'e', 'h', 'l', 'o', 'u', 'x', 'z'])  
  160.  
  161. (2)遍历集合 
  162.  
  163. >>> for e in s:  
  164. ...     print e  
  165. ...   
  166. a  
  167. e  
  168. h  
  169. l  
  170. o  
  171. u  
  172. x  
  173. z  
  174.  
  175. (3)更新集合(add/update/remove/discard/pop/clear(-=)) 
  176. s.add(obj):添加对象obj 
  177. s.update(s1): 用s1中的成员修改s,s现在包含s1的成员 
  178. s.remove(obj):从集合s中删除obj,若obj不存在,则引发KeyError错误 
  179. s.discard(obj): 如果obj是s的成员,则删除obj 
  180. s.pop(): 删除集合s中任意一个对象,并返回 
  181. s.clear(): 删除集合s中所有元素 
  182.  
  183. >>> s = set('alexzhou')  
  184. >>> s.update('hai')  
  185. >>> s  
  186. set(['a', 'e', 'i', 'h', 'l', 'o', 'u', 'x', 'z'])  
  187. >>> s.add('hai')  
  188. >>> s  
  189. set(['a', 'hai', 'e', 'i', 'h', 'l', 'o', 'u', 'x', 'z'])  
  190. >>> s.remove('hai')  
  191. >>> s  
  192. set(['a', 'e', 'i', 'h', 'l', 'o', 'u', 'x', 'z'])  
  193. >>> s -= set('alex')  
  194. >>> s  
  195. set(['i', 'h', 'o', 'u', 'z'])  
  196. >>> s.pop()  
  197. 'i' 
  198. >>> s  
  199. set(['h', 'z', 'u', 'o'])  
  200. >>> s.discard('h')  
  201. >>> s  
  202. set(['z', 'u', 'o'])  
  203. >>> s.clear()  
  204. >>> s  
  205. set([])  
  206. >>> fs = frozenset('alexzhou')  
  207. >>> fs.add('z')  
  208. Traceback (most recent call last):    
  209. File "<stdin>", line 1, in <module>  
  210. AttributeError: 'frozenset' object has no attribute 'add'  
  211.  
  212. (4) 集合比较 
  213. s1.issubset(s2):检测s1是否是s2的子集,是则返回True,否则返回False 
  214. s1.issuperset(s2):检测s1是否是s2的超集,是则返回True,否则返回False 
  215.  
  216. >>> s = set('alexzhou')  
  217. >>> fs = frozenset('alexzhou')  
  218. >>> s == fs  
  219. True 
  220. >>> s2 = set('alexzhou')  
  221. >>> s == s2  
  222. True>>> s3 = set('alexzhouj')  
  223. >>> s > s3  
  224. False 
  225. >>> s < s3  
  226. True 
  227. >>> s  
  228.  
  229. (5)联合uNIOn操作(s1|s2,s1.union(s2)) 
  230. 产生的集合的每个元素至少是其中一个集合的成员。如果左右两边的集合类型相同,则产生的结果是相同的,若不同,则产生的结果跟左操作数相同。 
  231.  
  232. >>> s1 = set('abc')  
  233. >>> fs = frozenset('de')  
  234.  
  235. >>> s1 | fs  
  236. set(['a', 'c', 'b', 'e', 'd'])    
  237. >>> type(s1 | fs)  
  238. <type 'set'>  
  239. >>> type(fs | s1)  
  240. <type 'frozenset'>    
  241. >>> s2 = set('fg')  
  242. >>> type(s1 | s2)  
  243. <type 'set'>  
  244. >>> s1.union(fs)  
  245. set(['a', 'c', 'b', 'e', 'd'])  
  246. >>> type(s1.union(fs))  
  247. <TYPE ?set?>  
  248. >>> type(fs.union(s1))  
  249. <TYPE ?frozenset?>  
  250.  
  251. (6)交集s1&s2,补集s1-s2,异或s1^s2 
  252. 交集:新集合中的元素同时是s1和s2的元素 –> s1.intersection(s2) 
  253. 补集:新集合中的元素只属于s1,不属于 –> s1.difference(s2) 
  254. 异或:新集合中的元素不能同时属于s1和s2 –> s1.symmetric_difference(s2) 
  255.  
  256. >>> fs = frozenset('de')  
  257. >>> s = set('def')  
  258. >>> s & fs  
  259. set(['e', 'd'])  
  260. >>> s - fs  
  261. set(['f'])  
  262. >>> fs - s  
  263. frozenset([])  
  264. >>> s ^ fs  
  265. set(['f'])  
  266. >>> s.intersection(fs)  
  267. set(['e', 'd'])  
  268. >>> s.difference(fs)  
  269. set(['f'])  
  270. >>> s.symmetric_difference(fs)  
  271. set(['f'])  

--结束END--

本文标题: python字典和集合

本文链接: https://lsjlt.com/news/189854.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python字典和集合
      1. 字典字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必...
    99+
    2023-01-31
    字典 python
  • Python中的集合和字典
    目录1 集合2 字典(key:value)1 集合 集合可以使用大括号({})或者set()函数进行创建,但是创建一个空集合必须使用set()函数,而不能用{},大括号是用来创建一个...
    99+
    2024-04-02
  • Python字典和集合讲解
    目录一、Python字典1.什么是字典2.字典的创建方式2.1 通过其他字典创建 2.2 通过关键字参数创建2.3 通过键值对的序列创建2.4 通过dict和zip结合创建3.字典的...
    99+
    2024-04-02
  • python-字典dict和集合set
    目录1.字典 字典的相关操作 获取字典的长度2.集合 1.字典 字典是python中的一种数据结构。 它的内容由**键-值(key-value)**的方式存在。 dict拥有良好的...
    99+
    2024-04-02
  • python--字典(dict)和集合(set)详解
    目录一、集合1.集合定义2.创建集合3.去重4.集合增删5.关系运算6.排序7.frozenset8.练习9.特性二、字典1.字典定义2.字典打印3.字典元素删除4.setdefau...
    99+
    2024-04-02
  • Python-字典和集合编程技巧
    hello,这里是Token_w的博客,欢迎您的到来 今天主要讲解Python字典和集合在实际编程中的使用技巧 整理不易,对您有所帮助,希望得到你的支持!感谢!!! 目录 1.如何在列表...
    99+
    2023-08-31
    python 开发语言
  • python中字典和集合是什么
    这篇文章主要介绍了python中字典和集合是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。字典/集合理解就像我们使用列表推导一样,我们也可以使用字典/集合推导。它们易于使...
    99+
    2023-06-27
  • Python字典和集合如何使用
    这篇文章主要介绍“Python字典和集合如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python字典和集合如何使用”文章能帮助大家解决问题。字典简介Python 中字典和集合也是非常相近的...
    99+
    2023-07-04
  • python元组 字典 集合
    1.列表构建栈的数据结构:栈的特点:先进后出 #!/usr/bin/env python #coding:utf-8 stack = [] info = """ 栈结构 1.入栈 2.出栈 ...
    99+
    2023-01-31
    字典 python
  • python基础入门之字典和集合
    目录正文字典集合python 中有6大标准类型: 数字(Number) 字符串(String) 列表(List) 元组(Tumple) 集合(Set) 字典(Dictionary...
    99+
    2024-04-02
  • python的字典和集合你了解吗
    目录字典修改字典删除字典元素字典键的特性字典内置函数&方法集合集合的基本操作集合内置方法完整列表总结字典 d = {key1 : value1, key2 : value2,...
    99+
    2024-04-02
  • Python中的字典与集合
    Dictionary:字典     Set:集合 字典的语法: Dictionary字典(键值对) 语法: dictionary = {key:value,key:value,key n:value n} 与 C# dictionary...
    99+
    2023-01-31
    字典 Python
  • Python中的集合和字典如何使用
    这篇文章主要讲解了“Python中的集合和字典如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中的集合和字典如何使用”吧!1 集合集合可以使用大括号({})或者set()函...
    99+
    2023-06-29
  • python中字典和集合的常用操作
    本篇内容主要讲解“python中字典和集合的常用操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python中字典和集合的常用操作”吧!#字典:存多个值,key-value存取,取值速度快,k...
    99+
    2023-06-02
  • python集合与字典的用法
    python集合与字典的用法 集合: 1.增加  add 2.删除   •del 删除集合          •discard(常用)删除集合中的元素  #删除一个不存在的元素不会报错     •remove 删除一个不存在的元素会报错 ...
    99+
    2023-01-30
    字典 python
  • Python 列表&元组&字典&集合
    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片、合并、删除等操作 可通过索引来向指定位置插入元素 可通过pop()方法删除末尾元素,pop(索引...
    99+
    2023-01-30
    字典 列表 Python
  • Python基础:字典(dict)与集合
    查找场景下与列表的性能对比    字典与集合之所以高效的原因是:内部结构都是一张哈希表。   平均情况下插入、查找和删除的时间复杂度为 O(1).   假设有数量100,000的产品列表: import time id = [x for...
    99+
    2023-01-31
    字典 基础 Python
  • 如何分析python中字典dict和集合set
    今天就跟大家聊聊有关如何分析python中字典dict和集合set,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.字典字典是python中的一种数据结构。它的内容由**键-值(ke...
    99+
    2023-06-22
  • python 列表,集合和字典的增删改查
    目录一 列表二 集合三 字典总结 一 列表 # 列表:包含0个或多个对象引用的有序队列,用中括号[]表示 # 增加 a = [] a.append(1) # a.append...
    99+
    2024-04-02
  • 元组、字典、集合
    1、作用 存多个值,对比列表来说,元组不可变,主要是用来读。 2、定义 与列表类型比,只不过[ ]换成() t = ()  #本质:t = tuple(())print(t,type(t))  #() <class 'tuple&...
    99+
    2023-01-31
    字典
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作