使用 Python 字典作为键(非嵌套)

新手上路,请多包涵

Python 不允许将字典用作其他字典中的键。是否有使用非嵌套字典作为键的解决方法?

更复杂的不可散列对象的一般问题和我的具体用例已 移至此处。我对用例的原始描述不正确。

原文由 Casebash 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 637
2 个回答

如果你有一个真正不可变的字典(虽然我不清楚为什么你不只使用成对列表:例如 [('content-type', 'text/plain'), ('host', 'example.com')] ),那么你可以转换你的 dict 进入:

  1. 一对元组。你已经在你的问题中做到了。需要 tuple 而不是 list 因为结果依赖于元素的排序和不变性。
    >>> tuple(sorted(a.items()))

  1. 冻结的集合。从数学的角度来看,这是一种更合适的方法,因为它只需要不可变元素 的相等关系 dict ,而第一种方法除了相等之外还需要排序关系。
    >>> frozenset(a.items())

原文由 Andrey Vlasovskikh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题