反转包含重复项的字典

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

字典是 Python 中的一种基本数据结构,它允许你存储键值对。有时,你可能需要反转一个字典,这意味着交换键和值,使值成为键,键成为值。在这个挑战中,你将负责编写一个函数,用于反转一个具有非唯一可哈希值的字典。

反转字典

编写一个函数 invert_dictionary(obj),它接受一个字典 obj 作为输入,并返回一个键值颠倒的新字典。输入字典将具有非唯一的可哈希值。如果两个或更多键具有相同的值,该函数应将这些键追加到输出字典中的一个列表中。

要解决这个问题,你可以按照以下步骤进行:

  1. 创建一个 collections.defaultdict,将每个键的默认值设为列表。
  2. 使用 dictionary.items() 并结合循环,通过 dict.append() 将字典的值映射为键。
  3. 使用 dict()collections.defaultdict 转换为常规字典。

函数签名:def invert_dictionary(obj: dict) -> dict:

from collections import defaultdict

def collect_dictionary(obj):
  inv_obj = defaultdict(list)
  for key, value in obj.items():
    inv_obj[value].append(key)
  return dict(inv_obj)
ages = {
  'Peter': 10,
  'Isabel': 10,
  'Anna': 9,
}
collect_dictionary(ages) ## { 10: ['Peter', 'Isabel'], 9: ['Anna'] }

总结

在这个挑战中,你学习了如何反转一个具有非唯一可哈希值的字典。你使用了一个 collections.defaultdict,将每个键的默认值设为列表,然后通过 dict.append() 将字典的值映射为键。最后,你使用 dict()collections.defaultdict 转换为常规字典。