热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用冷冻套装作为Dict钥匙是否安全?

如何解决《使用冷冻套装作为Dict钥匙是否安全?》经验,为你挑选了3个好方法。

它显然有效,但有两种相同的元素碰巧在Dict中添加两个条目的情况?我想我之前得到了这个条件并将我的代码更改frozenset(...)tuple(sorted(frozenset(...))).知道Dict和冻结集实现如何确认是否需要的人可以吗?



1> John the Kin..:

它是安全的使用frozenset作为dict重点?是.

根据文档,Frozenset是可以清除的,因为它是不可变的.这意味着它可以用作dict的键,因为键的先决条件是它是可清除的.

来自FrozenSet文档

frozenset类型是不可变的和可散列的 - 其内容在创建后不能更改; 因此,它可以用作字典键或另一组的元素.

并且冗余地,来自词典文档:

...键,可以是任何不可变类型


为了澄清,一组(按定义),冻结与否,不保留秩序.它们在内部存储,不考虑订单并删除了重复元素,因此以不同顺序构建的两个集合将是字典中的等效键 - 它们是相同的.

>>> frozenset([1,2,2,3,3]) == frozenset([3,2,1,1,1])
True

同样地,

>>> d = {}
>>> d[frozenset([1,1,2,3])] = 'hello'
>>> d[frozenset([1,2,3,3])]
'hello'
>>> d[frozenset([3,3,3,2,1,1,1])]
'hello'
>>> d[frozenset([2,1,3])]
'hello'



2> georg..:

有两种相同元素碰巧在Dict中添加两个条目的情况吗?

编号frozenset哈希算法不依赖于元素的顺序,仅依赖于元素本身.具有相同元素的两个FS'相等且具有相等的哈希值,因此满足"dict身份"的两个标准,换句话说,它们是相同的dict键:

>>> a = frozenset([1,1,1,1,2,3])
>>> b = frozenset([3,3,3,3,2,1])
>>> {a:1, b:2}
{frozenset([1, 2, 3]): 2}



3> gboffi..:

来自官方文档

frozenset类型是不可变的和可散列的 - 其内容在创建后不能更改; 因此,它可以用作字典键或另一组的元素.

(重点是我的)


推荐阅读
  • Java之HashMap在多线程情况下导致死循环的问题
    PS:不得不说Java编程思想这本书是真心强大..学习内容:1.HashMap<K,V>在多线程的情况下出现的死循环现象当初学Java的时候只是知道HashMap< ... [详细]
  • 类Hashtable<K,V>所有已实现的接口:Serializable,Cloneable,Map<K,V>此类实现一个哈希表,该哈希表将键映 ... [详细]
  • 01Map集合概述A:Map集合概述:我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同a:Collection中的集合 ... [详细]
  • 手写HashMap,快手面试官直呼内行
    手写HashMap,快手面试官直呼内行-手写HashMap?这么狠,面试都卷到这种程度了?第一次见到这个面试题,是在某个不方便透露姓名的Offer收割机大佬的文章:这……我当 ... [详细]
  • hashmap线程不安全允许有null的键和值效率高一点、方法不是Synchronize的要提供外同步有containsvalue和containsKey方法HashMap是Java1 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • HashTable与ConcurrentHashMap均可实现HashMap的功能,对外提供了键值对存储的数据结构。但是在内部结构及实现上有何区别,性能上的差异到底在哪里又是如何导致的 ... [详细]
  • 有2种办法让HashMap线程安全,分别如下:  方法一:通过Collections.synchronizedMap()返回一个新的Map,这个新的map就是线程安全的。这个要求大家习惯基于接口编程 ... [详细]
  • 转载自:http:www.blogjava.netCarpenterLeearchive20160427430268.html总体介绍之所以把HashSet和HashMa ... [详细]
  • 缓存这个东西就是为了提高运行速度的,由于缓存是在寸土寸金的内存里面,不是在硬盘里面,所以容量是很有限的。LRU这个算法就是把最近一次使用时间离现在时间最远的数据删除掉。先说说List:每 ... [详细]
  • 在Java中有多种遍历HashMap的方法,注意Java中所有的Map类型都实现了共有的Map接口,所以接下来方法适用于所有Map(如:HaspMap,TreeMap,Linked ... [详细]
  • Java面试 HashMap、HashSet源码解析
    本章所有源代码基于JDK1.8版本HashMap和HashSet是JavaCollectionFramework的两个重要成员,其中HashMap是Map接口的常用实现类,Hash ... [详细]
  • 写这篇文章起源于一道面试题,如何将自定义的类对象作为key存储到HashMap中,即考虑怎么判断key的唯一性。首先,我们看以下HashMap中put(…)方法的源码:public ... [详细]
  • 【转】由HashMap哈希算法引出的求余%和与运算&转换问题
    目录1、引出问题2、结论3、分析过程4、总结回到顶部1、引出问题  在前面讲解HashMap的源码实现时,有 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
author-avatar
到处旅游增加阅历入
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有