Python multidict 示例–将单个键映射到字典中的多个值

系列教程导航

  1. Python基础教程
  2. 在SublimeEditor中配置Python环境
  3. Python代码中添加注释
  4. Python中的变量的使用
  5. Python中的数据类型
  6. Python中的关键字
  7. Python字符串操作
  8. Python中的list操作
  9. Python中的Tuple操作
  10. Pythonmax()和min()–在列表或数组中查找最大值和最小值
  11. Python找到最大的N个(前N个)或最小的N个项目
  12. Python读写CSV文件
  13. Python中使用httplib2–HTTPGET和POST示例
  14. Python将tuple开箱为变量或参数
  15. Python开箱Tuple–太多值无法解压
  16. Pythonmultidict示例–将单个键映射到字典中的多个值
  17. PythonOrderedDict–有序字典
  18. Python字典交集–比较两个字典
  19. Python优先级队列示例

1. 什么是 multidict 词典

在 Python 中,"multidict"一词用于指代一种特殊的字典结构,在这种字典中可以将单个键映射到多个值。例如:

multidictWithList = {
    'key1': [1, 2, 3],
    'key2': [4, 5]
}

multidictWithSet = {
    'key1': {1, 2, 3},
    'key2': {4, 5}
}

在选择底层数据结构时,建议遵循以下原则:

  1. 如果要保留项目的插入顺序,请使用 list
  2. 如果要消除重复项(并且不关心顺序),请使用 set

2. multidict 词典构建示例

要轻松构建此类词典,可以使用 collections 模块中的 defaultdictdefaultdict 的功能在于它会自动初始化第一个值,因此您只需关注添加项目即可,无需手动检查键是否存在。

from collections import defaultdict

# list backed multidict
d1 = defaultdict(list.html)
d1['key1'].append(1.html)
d1['key1'].append(2.html)
d1['key1'].append(3.html)
d1['key2'].append(4.html)
d1['key2'].append(5.html)

# set backed multidict
d2 = defaultdict(set.html)
d2['key1'].add(1.html)
d2['key1'].add(2.html)
d2['key1'].add(3.html)
d2['key2'].add(4.html)
d2['key2'].add(5.html)

>>> d1
defaultdict(<type 'list'>, {'key2': [4, 5], 'key1': [1, 2, 3]}.html)

>>> d1['key1']
[1, 2, 3]

>>> d2
defaultdict(<type 'set'>, {'key2': set([4, 5].html), 'key1': set([1, 2, 3].html)})

>>> d2['key1']
set([1, 2, 3].html)

学习愉快!

说明

本文示例中的输出格式(如 <type 'list'>)基于 Python 2 环境。在 Python 3 中,类型显示通常为 <class 'list'>,且 set 的字面量表示可能有所不同(如 {1, 2, 3}),但 defaultdict 的核心用法保持一致。