首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA函数之旅-dict()函数

  • 25-03-03 04:31
  • 3362
  • 6789
blog.csdn.net

目录

1、dict()函数:

1-1、Python:

1-2、VBA:

2、dict()与dict差异对比:

3、相关文章:

个人主页:非风V非雨-CSDN博客


        dict()函数在 Python 中用于创建一个新的字典对象。字典是一种无序的键值对集合,它允许我们根据键来存储和检索值。常见的应用场景有:

1、动态数据存储:字典非常适合存储动态数据,这些数据可能在运行时才会确定其键和值。例如,我们可以根据用户的输入或外部数据源动态地创建和更新字典。

2、配置文件和参数设置:许多程序需要配置文件来指定不同的设置或参数。字典可以用来存储这些配置项和它们的值,使得程序能够灵活地读取和修改配置。

3、统计数据:字典非常适合用来统计和记录数据,例如,统计文本中单词出现的频率。

4、映射和转换:字典可以用来实现键和值之间的映射关系,这在数据转换和替换时非常有用。

5、解析JSON数据:当从外部源(如API)接收JSON数据时,json.loads()函数通常会将JSON字符串解析为Python字典,从而方便后续处理。

6、缓存和状态管理:字典可以用作临时存储数据的缓存,或者在程序执行期间跟踪状态信息。

7、构建复杂数据结构:字典可以包含其他字典、列表或其他复杂数据类型,从而构建出嵌套的数据结构。

        这些只是dict()函数的一些常见应用场景。实际上,由于字典的灵活性和便利性,它在 Python 编程中几乎无处不在,是构建复杂程序和数据结构的重要工具。

1、dict()函数:
1-1、Python:
  1. # 1.函数:dict()
  2. # 2.功能:用于创建一个新的字典或根据传入的参数创建一个字典对象
  3. # 3.语法:
  4. # 3-1、dict(**kwarg)
  5. # 3-2、dict(mapping, **kwarg)
  6. # 3-3、dict(iterable, **kwarg)
  7. # 4.参数:
  8. # 4-1、`**kwarg`:一到多个关键字参数,这些关键字参数及其对应的值将被添加到字典中
  9. # 4-2、`mapping`:另一个字典,其键值对将被添加到新字典中,如zip()函数
  10. # 4-3、`iterable`:一个可迭代对象,其中包含可迭代的键值对(通常是包含两个元素的元组或其他可迭代对象)
  11. # 5.返回值:一个字典,如果不传入任何参数,则返回空字典
  12. # 6.说明:
  13. # 6-1、使用dict()函数通过给定的关键字参数创建字典时,name键名必须都是Python中的标识符,否则会提示SyntaxError错误,如下:
  14. # SyntaxError: expression cannot contain assignment, perhaps you meant "=="?
  15. # print(dict(1='a',2='b'))
  16. # 7.示例:
  17. # 应用1:字典的增、删、改、查操作
  18. # 增(添加键值对)
  19. # 可以通过直接赋值的方式向字典中添加新的键值对:
  20. my_dict = {}
  21. my_dict['key1'] = 'value1' # 添加键值对 'key1': 'value1'
  22. # 删(删除键值对或字典)
  23. #可以使用 `del` 语句或 `pop()` 方法来删除字典中的键值对,也可以使用 `clear()` 方法来清空整个字典:
  24. my_dict = {'key1': 'value1', 'key2': 'value2'}
  25. # 使用del语句删除键值对
  26. del my_dict['key1']
  27. # 使用pop()方法删除键值对,并返回被删除的值
  28. removed_value = my_dict.pop('key2')
  29. # 清空字典
  30. my_dict.clear()
  31. # 改(修改键值对)
  32. my_dict = {'key1': 'value1'}
  33. my_dict['key1'] = 'new_value1' # 修改 'key1' 的值为 'new_value1'
  34. #查(查询键值对)
  35. # 可以通过键来查询字典中的值:
  36. my_dict = {'key1': 'value1', 'key2': 'value2'}
  37. # 使用键来获取值
  38. value = my_dict['key1'] # 如果键不存在,会抛出KeyError异常
  39. # 使用get()方法来安全地获取值,如果键不存在则返回None或指定的默认值
  40. value = my_dict.get('key1') # 如果键存在,返回对应的值;否则返回None
  41. value = my_dict.get('key3', 'default_value') # 如果键不存在,返回'default_value'
  42. # 通过 `in` 关键字来检查字典中是否包含某个键:
  43. key_exists = 'key1' in my_dict # 如果'key1'在字典中,返回True;否则返回False
  44. # 使用 `keys()`, `values()`, 和 `items()` 方法来获取字典的键、值或键值对的列表:
  45. keys = my_dict.keys() # 获取键的列表
  46. values = my_dict.values() # 获取值的列表
  47. items = my_dict.items() # 获取键值对的列表
  48. # 应用2:动态数据存储
  49. user_data = dict()
  50. print(user_data)
  51. user_data['name'] = 'Myelsa'
  52. user_data['age'] = 18
  53. print(user_data)
  54. # {}
  55. # {'name': 'Myelsa', 'age': 18}
  56. # 应用3:配置文件和参数设置
  57. config = dict(
  58. database_url='postgresql://user:password@localhost:5432/mydb',
  59. debug_mode=True
  60. )
  61. print(config)
  62. # {'database_url': 'postgresql://user:password@localhost:5432/mydb', 'debug_mode': True}
  63. # 应用4:统计数据
  64. word_counts = dict()
  65. text = "Myelsa is a sunny and handsome boy. Myelsa is wonderful!"
  66. for word in text.split():
  67. if word in word_counts:
  68. word_counts[word] += 1
  69. else:
  70. word_counts[word] = 1
  71. print(word_counts)
  72. # {'Myelsa': 2, 'is': 2, 'a': 1, 'sunny': 1, 'and': 1, 'handsome': 1, 'boy.': 1, 'wonderful!': 1}
  73. # 应用5:映射和转换
  74. abbreviations = dict(
  75. BTW='By the way',
  76. LOL='Laugh out loud'
  77. )
  78. text = "BTW, this is a LOL example."
  79. for abbr, expansion in abbreviations.items():
  80. text = text.replace(abbr, expansion)
  81. print(abbreviations)
  82. # {'BTW': 'By the way', 'LOL': 'Laugh out loud'}
  83. # 应用6:解析JSON数据
  84. import json
  85. json_data = '{"name": "Myelsa", "age": 18}'
  86. data_dict = json.loads(json_data)
  87. print(data_dict['name'])
  88. # Myelsa
  89. # 应用7:缓存和状态管理
  90. cache = dict()
  91. def compute_expensive_result(key):
  92. if key not in cache:
  93. cache[key] = some_expensive_computation(key)
  94. return cache[key]
  95. # 应用8:构建复杂数据结构
  96. users = {
  97. 'Myelsa': {
  98. 'age': 18,
  99. 'email': '[email protected]'
  100. },
  101. 'Jimmy': {
  102. 'age': 15,
  103. 'email': '[email protected]'
  104. }
  105. }
  106. print(users)
  107. # {'Myelsa': {'age': 18, 'email': '[email protected]'}, 'Jimmy': {'age': 15, 'email': '[email protected]'}}
1-2、VBA:
  1. Rem 模拟Python中dict()函数应用1:字典的增、删、改、查操作
  2. '你需要在VBA编辑器中添加对 Microsoft Scripting Runtime 的引用。你可以通过以下步骤来添加:
  3. '1、在VBA编辑器中,点击 "工具" -> "引用"
  4. '2、在弹出的 "引用 - VBAProject" 对话框中,滚动并勾选 "Microsoft Scripting Runtime"
  5. '3、点击 "确定"
  6. Rem 增(添加键值对)
  7. Sub TestRun_1()
  8. Dim my_dict As Object
  9. Set my_dict = CreateObject("Scripting.Dictionary")
  10. my_dict.add "key1", "value1"
  11. ' 打印键值对以验证
  12. Debug.Print my_dict.item("key1") ' 输出: value1
  13. End Sub
  14. 'value1
  15. Rem 删(删除键值对或字典)
  16. Sub TestRun_2()
  17. Dim my_dict As Object
  18. Set my_dict = CreateObject("Scripting.Dictionary")
  19. ' 添加键值对
  20. my_dict.add "key1", "value1"
  21. my_dict.add "key2", "value2"
  22. ' 打印字典的内容以验证
  23. Debug.Print "初始字典内容:"
  24. Debug.Print "key1 -> " & my_dict.item("key1")
  25. Debug.Print "key2 -> " & my_dict.item("key2")
  26. ' 使用Remove方法删除键值对
  27. my_dict.Remove ("key1")
  28. Debug.Print "删除key1后的字典内容:"
  29. If Not my_dict.Exists("key1") Then
  30. Debug.Print "key1已删除"
  31. End If
  32. ' 使用Item方法和Remove方法结合来模拟pop()方法,并返回被删除的值
  33. Dim removed_value As Variant
  34. If my_dict.Exists("key2") Then
  35. removed_value = my_dict.item("key2")
  36. my_dict.Remove ("key2")
  37. Debug.Print "使用pop()方法模拟删除key2,返回的值是:" & removed_value
  38. Else
  39. Debug.Print "key2不存在,无法pop"
  40. End If
  41. ' 清空字典
  42. my_dict.RemoveAll
  43. Debug.Print "清空字典后的内容:"
  44. If my_dict.count = 0 Then
  45. Debug.Print "字典已清空"
  46. End If
  47. End Sub
  48. '初始字典内容:
  49. 'key1 -> value1
  50. 'key2 -> value2
  51. '删除key1后的字典内容:
  52. 'key1已删除
  53. '使用pop()方法模拟删除key2,返回的值是:value2
  54. '清空字典后的内容:
  55. '字典已清空
  56. Rem 改(修改键值对)
  57. Sub TestRun_3()
  58. Dim my_dict As Object
  59. Set my_dict = CreateObject("Scripting.Dictionary")
  60. ' 添加键值对
  61. my_dict.add "key1", "value1"
  62. ' 修改 'key1' 的值为 'new_value1'
  63. my_dict("key1") = "new_value1"
  64. ' 打印修改后的值以验证
  65. Debug.Print "修改后的 'key1' 的值: " & my_dict.item("key1")
  66. End Sub
  67. '修改后的 'key1' 的值: new_value1
  68. Rem 查(查询键值对)
  69. Sub TestRun_4()
  70. Dim my_dict As Object
  71. Set my_dict = CreateObject("Scripting.Dictionary")
  72. ' 添加键值对
  73. my_dict.add "key1", "value1"
  74. my_dict.add "key2", "value2"
  75. ' 使用键来获取值
  76. Dim val As Variant
  77. On Error Resume Next ' 忽略因键不存在而可能产生的错误
  78. val = my_dict.item("key1")
  79. If Err.number <> 0 Then
  80. Debug.Print "KeyError: 键 'key1' 不存在"
  81. Err.Clear ' 清除错误
  82. Else
  83. Debug.Print "键 'key1' 的值: " & val
  84. End If
  85. On Error GoTo 0 ' 恢复正常的错误处理
  86. ' 使用类似get()的方法安全地获取值
  87. Dim val_1 As Variant
  88. val_1 = GetValueSafe(my_dict, "key1")
  89. Debug.Print "安全获取 'key1' 的值: " & IIf(IsMissing(val_1), "None", val_1)
  90. val_1 = GetValueSafe(my_dict, "key3", "default_value")
  91. Debug.Print "安全获取 'key3' 的值(带默认值): " & val_1
  92. ' 通过 `Exists` 方法来检查字典中是否包含某个键
  93. Dim key_exists As Boolean
  94. key_exists = my_dict.Exists("key1")
  95. Debug.Print "'key1' 是否存在于字典中: " & CStr(key_exists)
  96. ' 使用 `Keys()`, `Items()` 方法来获取字典的键和键值对的列表
  97. Dim keys As Variant
  98. Dim items As Variant
  99. Dim i As Integer
  100. keys = my_dict.keys()
  101. Debug.Print "键的列表: "
  102. For i = LBound(keys) To UBound(keys)
  103. Debug.Print keys(i)
  104. Next i
  105. items = my_dict.items()
  106. Debug.Print "键值对的列表: "
  107. For i = LBound(items) To UBound(items)
  108. Debug.Print "键: " & my_dict.keys()(i) & ", 值: " & items(i)
  109. Next i
  110. ' 获取值的列表
  111. Dim values As Variant
  112. ReDim values(UBound(items)) ' 预先分配数组大小
  113. For i = LBound(items) To UBound(items)
  114. values(i) = items(i)
  115. Next i
  116. Debug.Print "值的列表: "
  117. For i = LBound(values) To UBound(values)
  118. Debug.Print values(i)
  119. Next i
  120. End Sub
  121. Function GetValueSafe(dict As Object, key As Variant, Optional defaultValue As Variant = Empty) As Variant
  122. If dict.Exists(key) Then
  123. GetValueSafe = dict.item(key)
  124. Else
  125. GetValueSafe = defaultValue
  126. End If
  127. End Function
  128. '键 'key1' 的值: value1
  129. '安全获取 'key1' 的值: value1
  130. '安全获取 'key3' 的值(带默认值): default_value
  131. ''key1' 是否存在于字典中: True
  132. '键的列表:
  133. 'key1
  134. 'key2
  135. '键值对的列表:
  136. '键: key1 , 值: Value1
  137. '键: key2 , 值: Value2
  138. '值的列表:
  139. 'Value1
  140. 'Value2
  141. Rem 模拟Python中dict()函数应用2:动态数据存储
  142. Sub TestRun_5()
  143. ' 声明一个Scripting.Dictionary对象
  144. Dim user_data As Object
  145. ' 创建Scripting.Dictionary对象
  146. Set user_data = CreateObject("Scripting.Dictionary")
  147. ' 打印初始的字典(VBA中无法直接打印字典,但可以打印其项数)
  148. Debug.Print "初始的user_data字典(项数): " & user_data.count
  149. ' 添加键值对
  150. user_data.add "name", "Myelsa"
  151. user_data.add "age", 18
  152. ' 打印更新后的字典(VBA中无法直接打印整个字典,但可以遍历并打印其键值对)
  153. Debug.Print "更新后的user_data字典:"
  154. Dim key As Variant
  155. For Each key In user_data.keys
  156. Debug.Print "键: " & key & ", 值: " & user_data(key)
  157. Next key
  158. End Sub
  159. '初始的user_data字典(项数): 0
  160. '更新后的user_data字典:
  161. '键: name, 值: Myelsa
  162. '键: age, 值: 18
  163. Rem 模拟Python中dict()函数应用3:配置文件和参数设置
  164. Sub TestRun_6()
  165. ' 声明Scripting.Dictionary对象
  166. Dim config As Object
  167. ' 创建Scripting.Dictionary对象
  168. Set config = CreateObject("Scripting.Dictionary")
  169. ' 添加键值对
  170. config.add "database_url", "postgresql://user:password@localhost:5432/mydb"
  171. config.add "debug_mode", True
  172. ' 打印字典内容
  173. Debug.Print "Config 字典内容:"
  174. Dim key As Variant
  175. For Each key In config.keys
  176. ' 对于布尔值,我们需要特殊处理以在VBA中正确显示
  177. Dim value As Variant
  178. value = config(key)
  179. If VBA.IsNumeric(value) Then
  180. Debug.Print "键: " & key & ", 值: " & IIf(value, "True", "False")
  181. Else
  182. Debug.Print "键: " & key & ", 值: " & CStr(value)
  183. End If
  184. Next key
  185. End Sub
  186. 'config 字典内容:
  187. '键: database_url, 值: postgresql://user:password@localhost:5432/mydb
  188. '键: debug_mode, 值: True
  189. Rem 模拟Python中dict()函数应用4:统计数据
  190. Sub TestRun_7()
  191. ' 声明Scripting.Dictionary对象来存储单词计数
  192. Dim word_counts As Object
  193. ' 声明变量来存储文本
  194. Dim text As String
  195. ' 声明变量来存储分割后的单词
  196. Dim words As Variant
  197. ' 声明变量来存储当前单词
  198. Dim word As Variant
  199. ' 声明变量来存储单词的计数
  200. Dim count As Integer
  201. ' 创建Scripting.Dictionary对象
  202. Set word_counts = CreateObject("Scripting.Dictionary")
  203. ' 设置文本内容
  204. text = "Myelsa is a sunny and handsome boy. Myelsa is wonderful!"
  205. ' 使用Split函数按空格分割文本为单词数组
  206. words = Split(text, " ")
  207. ' 遍历单词数组
  208. For Each word In words
  209. ' 忽略大小写并去除单词两端的空白字符
  210. word = Trim(LCase(word))
  211. ' 如果单词已经在字典中,则增加计数
  212. If word_counts.Exists(word) Then
  213. word_counts(word) = word_counts(word) + 1
  214. ' 否则,将单词添加到字典并设置计数为1
  215. Else
  216. word_counts.add word, 1
  217. End If
  218. Next word
  219. ' 打印单词计数
  220. Debug.Print "单词计数:"
  221. Dim key As Variant
  222. For Each key In word_counts.keys
  223. Debug.Print "单词: " & key & ", 计数: " & word_counts(key)
  224. Next key
  225. End Sub
  226. 单词计数:
  227. '单词: myelsa, 计数: 2
  228. '单词: is, 计数: 2
  229. '单词: a, 计数: 1
  230. '单词: sunny, 计数: 1
  231. '单词: and, 计数: 1
  232. '单词: handsome, 计数: 1
  233. '单词: boy., 计数: 1
  234. '单词: wonderful!, 计数: 1
  235. Rem 模拟Python中dict()函数应用5:映射和转换
  236. Sub TestRun_8()
  237. ' 声明Scripting.Dictionary对象来存储缩写和对应的扩展
  238. Dim abbreviations As Object
  239. ' 声明变量来存储文本
  240. Dim text As String
  241. ' 声明变量来存储缩写和扩展
  242. Dim abbr As Variant
  243. Dim expansion As Variant
  244. ' 创建Scripting.Dictionary对象
  245. Set abbreviations = CreateObject("Scripting.Dictionary")
  246. ' 添加缩写和对应的扩展
  247. abbreviations.add "BTW", "By the way"
  248. abbreviations.add "LOL", "Laugh out loud"
  249. ' 设置文本内容
  250. text = "BTW, this is a LOL example."
  251. ' 遍历字典中的缩写和扩展
  252. For Each abbr In abbreviations.keys
  253. expansion = abbreviations(abbr)
  254. ' 使用Replace函数替换文本中的缩写
  255. text = Replace(text, abbr, expansion)
  256. Next abbr
  257. ' 打印替换后的文本
  258. Debug.Print "替换后的文本:" & text
  259. ' 打印缩写和扩展的字典(在VBA中不能直接打印字典,但可以打印其内容)
  260. Debug.Print "缩写和扩展的字典:"
  261. For Each abbr In abbreviations.keys
  262. Debug.Print "缩写: " & abbr & ", 扩展: " & abbreviations(abbr)
  263. Next abbr
  264. End Sub
  265. '替换后的文本:By the way, this is a Laugh out loud example.
  266. '缩写和扩展的字典:
  267. '缩写: BTW, 扩展: By the way
  268. '缩写: LOL, 扩展: Laugh out loud
  269. Rem 模拟Python中dict()函数应用8:构建复杂数据结构
  270. Sub TestRun_9()
  271. ' 声明Scripting.Dictionary对象来存储用户信息
  272. Dim users As Object
  273. ' 声明变量来存储用户名称和用户的详细信息字典
  274. Dim userName As Variant
  275. Dim userInfo As Object
  276. ' 声明变量来存储用户的年龄和邮箱
  277. Dim age As Integer
  278. Dim email As String
  279. ' 创建Scripting.Dictionary对象来存储用户信息
  280. Set users = CreateObject("Scripting.Dictionary")
  281. ' 添加第一个用户信息
  282. Set userInfo = CreateObject("Scripting.Dictionary")
  283. age = 18
  284. email = "[email protected]"
  285. userInfo.add "age", age
  286. userInfo.add "email", email
  287. users.add "Myelsa", userInfo
  288. ' 添加第二个用户信息
  289. Set userInfo = CreateObject("Scripting.Dictionary")
  290. age = 15
  291. email = "[email protected]"
  292. userInfo.add "age", age
  293. userInfo.add "email", email
  294. users.add "Jimmy", userInfo
  295. ' 打印用户信息
  296. Debug.Print "用户信息:"
  297. For Each userName In users.keys
  298. Debug.Print "用户名: " & userName
  299. Dim userInfoKey As Variant
  300. For Each userInfoKey In users(userName).keys
  301. Debug.Print " " & userInfoKey & ": " & users(userName)(userInfoKey)
  302. Next userInfoKey
  303. Next userName
  304. End Sub
  305. '用户信息:
  306. '用户名: Myelsa
  307. ' age: 18
  308. 'email: alice@ example.com
  309. '用户名: Jimmy
  310. ' age: 15
  311. 'email: bob@ example.com
2、dict()与dict差异对比:

1、dict():

        在Python中,dict()函数用于创建字典对象,其优点和缺点主要与字典这种数据结构本身相关。

1-1、优点:

1-1-1、快速访问:字典提供了基于键的快速查找、插入和删除操作。由于字典底层是通过哈希表实现的,所以这些操作的时间复杂度平均情况下是O(1),这使得字典在处理大量数据时非常高效。

1-1-2、灵活性:字典允许存储任意类型的键和值,只要键是可哈希的(即具有不变性并能生成唯一的哈希值)。这种灵活性使得字典能够轻松适应各种应用场景。

1-1-3、存储关联数据:字典非常适合存储具有关联关系的数据,如配置信息、映射关系等。通过键可以方便地获取或修改与之关联的值。

1-1-4、动态性:字典的大小可以动态调整,可以根据需要添加或删除键值对,无需预先定义大小。

1-2、缺点:

1-2-1、无序性:在Python 3.6之前的版本中,字典是无序的,即键值对的存储顺序是不确定的。虽然从Python 3.7开始,字典保持了插入顺序,但它仍然不是一个有序的集合类型。如果需要保持顺序,可能需要额外的处理或使用其他数据结构。

1-2-2、空间开销:由于字典使用哈希表来存储键值对,因此相对于列表等其他数据结构,字典可能会占用更多的内存空间。特别是在存储大量数据时,这种空间开销可能会变得更加显著。

1-2-3、键的唯一性:字典要求键必须是唯一的。如果尝试使用相同的键多次添加元素,后添加的值会覆盖先前的值。这可能会在某些情况下导致数据丢失或意外覆盖。

1-2-4、哈希冲突:虽然哈希表的设计旨在减少哈希冲突,但在极端情况下,如果哈希函数的设计不够理想或键的分布不均匀,哈希冲突可能会导致性能下降。

        注意,这些优缺点是针对字典这种数据结构本身而言的,而不是针对dict()函数本身。dict()函数只是用于创建字典对象的一个简单工具,其性能和行为与字典数据结构本身是一致的。因此,在选择使用字典时,应充分考虑其优缺点,并根据具体的应用场景和需求来决定是否使用。

2、dict:

2-1、优点:

        Python中的字典(dictionary)类型是一种非常强大且灵活的数据结构,用于存储键值对。

2-1-1、快速访问:字典的查找、插入和删除操作的时间复杂度接近于O(1),即平均情况下,无论字典有多大,这些操作都能在常数时间内完成。这使得字典成为存储需要频繁查找的数据的理想选择。

2-1-2、灵活性:字典允许存储任何类型的键和值,只要键是可哈希的(即具有不变性,并且可以通过哈希函数得到唯一的哈希值)。这意味着你可以在一个字典中存储各种类型的数据,如整数、字符串、浮点数、列表、元组、其他字典等。

2-1-3、无序性:在Python 3.7及更高版本中,字典保持了插入顺序(尽管它仍然不是一个有序的集合类型)。这种特性在某些场景下很有用,比如当你需要按特定顺序遍历字典时。

2-1-4、易于使用:字典的语法直观易懂,创建和修改字典的操作也非常简单。

2-1-5、可扩展性:字典的大小可以动态调整,你可以根据需要添加或删除键值对,而无需预先定义字典的大小。

2-2、缺点:

2-2-1、无序性:在Python 3.6及之前的版本中,字典是无序的,这意味着你不能预测键值对的存储顺序。虽然这通常不是问题,但在需要按特定顺序处理键值对的情况下,它可能会导致问题。

2-2-2、空间开销:由于字典需要维护哈希表和存储键值对,因此相对于列表等其他数据结构,字典可能会占用更多的内存空间。

2-2-3、键的唯一性:字典要求键必须是唯一的。如果尝试使用相同的键多次添加元素,后添加的值会覆盖先前的值。这可能会在某些情况下导致数据丢失或意外覆盖。

2-2-4、哈希冲突:虽然字典的查找、插入和删除操作在平均情况下具有O(1)的时间复杂度,但在最坏情况下(即哈希冲突很多时),这些操作的时间复杂度可能会退化。虽然Python的字典实现通过开放寻址等技术减少了哈希冲突的影响,但在极端情况下仍可能出现问题。

2-2-5、不可变性:字典本身是不可变的,但字典的值可以是可变的。这可能会导致在并发编程中出现问题,因为多个线程或进程可能同时修改同一个字典的值,从而引发数据不一致或竞争条件。

        注意,这些优缺点是相对于其他数据结构而言的,而不是绝对的。在选择使用字典还是其他数据结构时,应根据具体的应用场景和需求来权衡这些优缺点。

3、相关文章:

3-1、Python-VBA函数之旅-all()函数

3-2、Python-VBA函数之旅-any()函数 

3-3、Python-VBA函数之旅-ascii()函数 

3-4、Python-VBA函数之旅-bin()函数 

Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客

Python函数之旅:Myelsa的Python函数之旅(高铁直达)

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览61139 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/137755104"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top