- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我猜它可能类似于 collections.namedtuple
,但这更像是一个 freeze-keys dict(半卡住 dict)。不是吗?
一个“frozendict”应该是一个卡住字典,它应该有keys
、values
、get
等,并且支持in
、for
等
最佳答案
Python 没有内置的 frozendict 类型。事实证明这不会经常有用(尽管它可能仍然比 frozenset
更有用)。
需要这种类型的最常见原因是在内存具有未知参数的函数的函数调用时。存储 dict 的可散列等效项(其中值是可散列的)的最常见解决方案类似于 tuple(sorted(kwargs.items()))
。
这取决于排序是否有点疯狂。 Python 不能肯定地 promise 排序会在这里产生一些合理的结果。 (但它不能 promise 太多其他东西,所以不要太担心。)
您可以轻松地制作某种类似于 dict 的包装器。它可能看起来像
import collections
class FrozenDict(collections.Mapping):
"""Don't forget the docstrings!!"""
def __init__(self, *args, **kwargs):
self._d = dict(*args, **kwargs)
self._hash = None
def __iter__(self):
return iter(self._d)
def __len__(self):
return len(self._d)
def __getitem__(self, key):
return self._d[key]
def __hash__(self):
# It would have been simpler and maybe more obvious to
# use hash(tuple(sorted(self._d.iteritems()))) from this discussion
# so far, but this solution is O(n). I don't know what kind of
# n we are going to run into, but sometimes it's hard to resist the
# urge to optimize when it will gain improved algorithmic performance.
if self._hash is None:
hash_ = 0
for pair in self.items():
hash_ ^= hash(pair)
self._hash = hash_
return self._hash
它应该很好用:
>>> x = FrozenDict(a=1, b=2)
>>> y = FrozenDict(a=1, b=2)
>>> x is y
False
>>> x == y
True
>>> x == {'a': 1, 'b': 2}
True
>>> d = {x: 'foo'}
>>> d[y]
'foo'
关于python - "frozen dict"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2703599/
我正在尝试将数据插入 Cassandra(2.1.9)我的 Java 对象有一个 UDT 列表的映射。在运行代码时,我收到有关 @Frozen 注释的错误。我正在使用 DataStax(2.1.9)
Kendo UI 网格卡住列 CSS 类。 我有一个带有卡住行/列的 Kendo UI 网格,我添加了一些条件格式,但不幸的是,此条件格式没有添加到卡住行/列 HTML 脚本 $("#grid").
我收到了一份。在Spyder中第二次从子文件夹导入库时出错,但第一次(重新启动Spyder后)或在Spyder外导入时工作正常。。代码是:。其中,test_lib.py只是。输出结果为:。当库不在子文
这个问题在这里已经有了答案: How to freeze freezable objects that cannot be frozen (1 个回答) 关闭 1 年前。 我正在为我的 WPF 应用
React 建议不要改变 props。我的印象是,当传入 props 时,它们将是不可变的或卡住的。 下面的代码不会抛出任何错误并改变 prop。这是一个错误吗? try{ var a = thi
使用frozenflask使我的网站静态化,我遇到以下问题。 当我的所有页面正在构建时(file//c:/Correctpath/build/2014/page-title/index.html),链
我遇到一个问题,AutoFixture 似乎正在覆盖卡住模拟上的属性。模拟类的属性是只读的,根据我的阅读,AutoFixture 不应该尝试对它做任何事情。 我在下面的 LINQPad 中包含了重现该
我有一个特定的问题:我创建了一个快速答题器游戏,其中两个玩家试图比另一个玩家更快地点击。一个特殊的按钮卡住对手的主要按钮。卡住的按钮目前只是变得不可点击,文字颜色变成灰色。 要添加一些“样式”,我想从
我有一个卡住的 div(使用 css position: fixed; 属性卡住)用作网站的标题。在 div 之后(或在 div 之下)是网页的正文或其余部分。 通知栏会淡入淡出 jQuery ($
有没有人见过这个错误?应用程序在打开时立即崩溃,因为它无法启动默认 Activity 。 Failure starting process com.xyz
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 13 年前。 Improve thi
Cassandra 中的frozen 关键字是什么意思? 我正在尝试阅读此文档页面:Using a user-defined type ,但他们对 frozen 关键字(他们在示例中使用的关键字)的解
卡住集是卡住集。 卡住列表可以是一个元组。 卡住的字典是什么?一个不可变的、可散列的字典。 我猜它可能类似于 collections.namedtuple,但这更像是一个 freeze-keys di
我有一个 Java 类,它使用 datastax cassandra 驱动程序将 pojo 写入 cassandra 表。一切工作正常,直到必须将类对象写入 cassandra 表。它抛出此错误: 原
您知道当您有一个卡住的窗口时,但是当您将另一个窗口拖到顶部时它会留下痕迹吗?有时它看起来有点像 Windows 3 纸牌的结尾 :) 当你完成时(就像我的截图)。 我想制作一个 C# windows
我正在使用Flask创建一个网站我想使用 Frozen-Flask 卡住,而且还可以让网站上线。 我关注了the documentation仅在卡住网站时将 FREEZER_RELATIVE_URLS
我的网格目前有 40 行。一次只能显示 20 行,因此网格有滚动条。 我想卡住 DataGridView 的最后一行,但随后滚动条消失了。如何解决? 最佳答案 您正在使用 DataGridviewRo
我使用 Object.freeze 来防止自己违反自己的规则。当我试图做一个错误的分配时,我希望 Object.freeze 跟我说话。然而,Object.freeze 只是让赋值失败!例如,如果我这
我有以下数据库结构: fullsize 发票表是我的麻烦所在。场景:第 1 个月:用户购买产品、制作和参加事件以及付款。这些被保存到数据库中。我想在本月的最后一天为每个用户开具账单/发票。此发票已创建
Order模型: class Order true before_create :price def price mrr = Warehouse.where(:product =>
我是一名优秀的程序员,十分优秀!