散列字典和列表

hashable_collections的Python项目详细描述


关于

此库允许将词典和列表用作 字典。换言之,它使它们可以散列。

而可变对象(列表、字典)不应设为散列 一般来说,程序员不应该滥用这种能力(你do 在投入生产之前测试你的代码,不是吗?).AN公司 显式使生成的哈希对象 为了方便起见,下面提供了不可变项。

有一些用例-例如,当试图通过 与NetworkX相同的键不同 节点,或者当您希望在 进行映射而不是调用复杂的标识 函数-这些函数可能有用并减少样板代码。

用法

>>> from hashable_collections.hashable_collections import hashable_dict
>>> hashed_dict = hashable_dict({'name':'foo'})
>>> from hashable_collections.hashable_collections import hashable_list
>>> hashed_list = hashable_list(['bar',1])
>>> output = {hashed_dict:0,hashed_list:1}
>>> output
{{'name':'foo'}: 0, ['bar', 1]: 1}

这些散列对象仍然保持可变-换句话说,它是 仍然可以分配hashed_dict['squiggle'] = 'squiggle'和 让它在没有问题的情况下执行。散列将相应地改变, 有效地使它成为一个不同于以前的对象。

或者,可以对此处定义的对象进行子类化并重写 方法__setitem__,以确保生成的哈希值 字典/列表是不可变的:

class immutable_hashable_dict(hashable_dict):

    def __setitem__(self,key,value):
        raise ValueError('Immutable hashable dicts do not let you change values inside your dictionary.')

class immutable_hashable_list(hashable_list):

    def __setitem__(self,key,value):
        raise ValueError('Immutable hashable lists do not let you change valus inside your list.')

注意事项

以下是可能出现的已知问题列表 技术。

  • 创建副本:如果shashable_dict,则 m = s然后更改m[0],对应的值为 s[0]也已更改。{ 1 哈希dict或哈希list到另一个对象,除非 当然第二个对象不会改变。

安装

pip install hashable_collections

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入