【问题标题】:float, tuple and frozenset are all hashable, why frozenset is specialfloat、tuple 和 freezeset 都是可散列的,为什么 freezeset 很特别
【发布时间】:2020-03-08 15:39:22
【问题描述】:

在 Python3.7.4 中

当我测试运行它时:

>>> hash((1.000001))
2305843009025
>>> hash(1.000001)
2305843009025
>>> (1.000001) == 1.000001
True
>>> [1.000001] == 1.000001
False

但是为什么:

>>> frozenset({1.000001}) == 1.000001
False
>>> hash(frozenset({1.000001}))
8757482414179413028

float、tuple、frozenset都是可散列的,为什么frozenset比较特殊

【问题讨论】:

  • 这里没有元组,你的问题是什么? frozenset 是可散列的。如果不是,您会收到错误消息。
  • 第一个不是元组而是浮点数。
  • (1.000001) 不是元组 - (1.000001,) 是 - 注意逗号。
  • 欢迎来到 StackOverflow!你的问题是什么?与您引用的其他类型相比,您认为 freezeset 有哪些特别之处?
  • 谢谢大家,现在,我知道我犯了一个愚蠢的错误,我稍后会拉一个解释

标签: python hash frozenset


【解决方案1】:

我犯了一个错误。逗号是元组的标识。

>>> hash(frozenset({1.000001}))
8757482414179413028
>>> hash((1.000001,))
2305846529543933606
>>> hash((1.000001))
2305843009025
>>> hash(1.000001)
2305843009025
>>> type((1.000001))
<class 'float'>
>>> type(1.000001)
<class 'float'>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2019-03-26
    • 2016-01-07
    相关资源
    最近更新 更多