字典和哈希表一样吗?

字典与Hashtables相同吗?

# 回答1


在2008-08-26 00:32:20,CNB写道:
是的,但是里面没有什么可以做碰撞处理的
就像列出清单,而不是简单地覆盖.
PS:您的信号比您的询问更长.请不要
那...
-----开始PGP签名-------------
版本:gnupg v1.4.6(gnu/linux)
iqivawubslo0knjk1vit/yr7aqlaxhaaotf4xebquq1c+fnvu93phetiotfsw/ni
R32NJO5MPU2ECYY4EOXGSHZW6P2EZ1I9K3YK8BPM89FRSZEQNR DDHHHH8XFO7CKFJX
deobve3x6jo4q9itvnpf6tuhcagyxvuav/f+hz9mndaj5o+xxg474429pumn1n4w
m5x4wk5btij1nv7r4xh+jofdxfshsoczbwyvgb+mizusqhat4q n9msuo3lhmngtd
EO03CVPDQIKCXQS77XNHIR8TTGAHLYRARAOSMBENCE5ELE7CALK VU/V4ONI+4G3JU
N0MFKZA2IQWULCJD3QADYWIMFLXRLYG6Y5OMVL/TM4729HTSVGBPZD0DSRR0RQS
tjgriljhv3bwkoxsk/uux2glbushjefgcimiepkmush7jn+cucvsgarj5zygicvq
gintiqaifheqjkpsfkrtlqbqbblwzcs86bzc ++ i0m+ienxexvu e3ay4lmt5dvcat
OX8TUBGE50XGOMWR9MS/SZRI9U5QYUUWZC2BYJUVAUUGAQXHWQUQXHWQUQVJCBFM9TI6BC
do+tmty8qjhb/qsw3tlx5hagw/cn+jw+xwp8b+xemnxaea/q3dwskftx1s5nwgg6
VVJWEDPOOQ3K2XEQFXZQ12CUN0FYJHUAZWR/06JG6MUAR0YEMHKGEQCCUAMUEKEU/
2vbxpaqvkpy =
= 7TSX
-----结束PGP签名-----
# 回答2


8月26日,9:43*上午,马丁·马林格 是的,但是里面没有什么可以做碰撞处理的
就像列出清单,而不是简单地覆盖.
PS:您的信号比您的询问更长.请不要
那...
*signature.asc
<1KViewDownload
我什么?
# 回答3


8月26日,5:43*PM,Martin Marcher 是的,但是里面没有什么可以做碰撞处理的
就像列出清单,而不是简单地覆盖.
请澄清:(1)什么都没有?在Python词典中
执行? (2)"理智碰撞处理"是什么意思?
"简单地覆盖"是什么意思?
蒂亚,
约翰
# 回答4


马丁·马林(Martin Marcher)写道:
是的,但是里面没有什么可以做碰撞处理的
就像列出清单,而不是简单地覆盖.
在谈论关联时,"碰撞"一词的定义很好
使用哈希(python的dicts)的数组:这意味着两个不同的
钥匙会产生相同的哈希值,导致桶形碰撞.和
课程python处理了这一点,并创建了其中的对象列表
经过遍历并使用比较的桶来确定哪个
检索的实际值.
python没有"一个关键图到值列表" - 主修 -
我认为理智的选择...
但是,您可以使用默认设备来实现:例如:
ListDict = DefaultDict(list)
listDict [key] .append(value)
diez
# 回答5


cnb Python中的" dict"类型具有一定的行为,如
语言参考.在Cpython中,它们被实施为哈希表,
但是我不记得任何指定的东西 *必须 *实施
那样.
因此,我的答案是"也许,但不要指望它".写你的
章程 m对语言的指定行为,而不是
基础实施.
- -
\ \ with Lisp或forth,主编程器具有无限的力量|
`\ and表现力.有了Python,即使是一个普通的人也可以到达|
_o__)为星星.
本·芬尼
# 回答6


8月26日,晚上7:36," Diez B. Roggisch" 在谈论关联时,"碰撞"一词的定义很好
使用哈希(python的dicts)的数组:这意味着两个不同的
钥匙会产生相同的哈希值,导致桶形碰撞.和
课程python处理了这一点,并创建了其中的对象列表
经过遍历并使用比较的桶来确定哪个
检索的实际值.
我在CPYTHON SVN TRUNK版本中均未看到存储桶或列表
dictobject.c和iirc一直使用开放的地址很长时间
时间.
# 回答7


约翰·马奇(John Machin)写道:当使用哈希(Hashing)谈论缔合阵列时,"碰撞"一词是相当明确的(python的dicts):这意味着两个不同的键产生相同的哈希值,从而导致了一个铲斗.当然,python可以对此进行处理,并在铲斗中创建对象的alist,并进行了比较,以确定要检索的实际值.

我在CPYTHON SVN TRUNK版本中均未看到存储桶或列表
dictobject.c和iirc一直使用开放的地址很长时间
时间.
我不知道涉及结构的确切名称 - 我命名了
从我对如何基于哈希的关联阵列的理解来自由
已实施.但是以下代码显示可能发生哈希碰撞
没有破坏数据,而OTOH当然会从中退化
通常是o(1)到o(n).尝试玩它,评论适当的
钥匙的哈希将导致出色的性能提高.
迪兹
导入pprint
班级愚蠢(对象):
def __init __(self,key):
self.key =键
def __hash __(自我):
#Return Hash(self.key)
返回1
def __cmp __(自我,其他):
返回CMP(self.key,other.key)
def __repr __(自我):
返回" <%s>"%self.key
d = {}
对于xrange(1000):
d [愚蠢(str(a))] = a
pprint.pprint(d)

# 回答8


2008年8月26日上午9:52上午9:52,CNB 是的,但是其中没有什么可以像拼写一样,而不是简单地覆盖列表.请不要...签名.

我什么?
呵呵,
那是 *我的 * sig ...我正在使用一些带有mut配置的旧盒子
仍然有财富脚本...对不起.
无论如何,碰撞处理的意思是:
$ python
Python 2.5.2(R252:60911,Jul 31 2008,17:31:22)
[GCC 4.2.3(Ubuntu 4.2.3-2ubuntu7)]在Linux2上
键入"帮助","版权","学分"或"许可"以获取更多信息.
{}
{'a':12,'b':13}
{'一个': '这是碰撞','b':13}
如您所见," a"的位置被简单地覆盖.大概"理智"没有
真正适用,因为Python创作者怎么可能知道
是我只是想覆盖价值还是确实想要某种形式的
碰撞处理(谈论清单与树木
子形式...)...
如果有人希望他/她/它仍然可以统计并做更多的魔术.
/马丁
-http://www.xing.com/profile/martin_marcher
您无法自由阅读此消息,
这样,您违反了我的许可证
并需要公开排尿.谢谢你.

# 回答9


在文章<6H ************@mid.uni-berlin.de>中
Diez B. Roggisch
# 回答10


马丁·马林(Martin Marcher)写道:
是的,但是里面没有什么可以做碰撞处理的
就像列出清单,而不是简单地覆盖.
您确定在这种情况下知道"碰撞处理"的含义?
# 回答11


Diez B. Roggisch写道:http://en.wikipedia.org/wiki/open_addressing
"开放式寻址或封闭的哈希是碰撞解决方案的一种方法
在哈希表中.使用此方法,哈希碰撞由
探测或通过数组中的替代位置进行搜索(
探针序列)直到找到目标记录或未使用的目标记录
找到了数组插槽,这表明该钥匙中没有此类键
桌子."
# 回答12


卡梅伦·莱尔德(Cameron Laird)写道:
.
.
.
?我迷路了.据我了解您的条款,Python的词典
对象的映射键,但是您更喜欢python的
词典将键仅映射到值列表.听起来*
充其量像络合物一样.你想做一个
关于实施与语义一致的观点?
OP似乎想要(或至少将其视为两个可行设计之一
选择),请在此线程中看到他的另一个答案.
我当然 *不同意,我只是指出Python来了
在需要的情况下,可以轻松地创建此类数据结构.
diez
# 回答13


2008年8月26日上午11:12上午11:12,弗雷德里克·卢德(Fredrik Lundh) 是的,但是其中没有什么可以像碰撞一样,而不是简单地覆盖.

您确定在这种情况下知道"碰撞处理"的含义?
我认为混乱来自于认为词典是
(真的)哈希表,因此诸如碰撞处理之类的东西是
暴露于数据结构的用户.从这个意义上,不,
字典是 *不是 *哈希表.它们是密钥的映射
价值观,他们使用哈希表作为实施的一部分.

# 回答14


在文章<6H ************@mid.uni-berlin.de>中
Diez B. Roggisch ...
?我迷路了.据我了解您的术语,Python的dictionariesmap键键为对象,但是您希望python'sdictionaries映射键,而不是值列表.听起来 *充其量是一种复杂化.你在尝试t吗 o对实施与语义一致的求助? OP似乎希望(或至少将其视为两个可行的DesignChoices之一),请在此线程中看到他的另一个答案.我当然 *不 *同意,我只是指出,Python casse casse wistwith意味着可以轻松创建 在需要的情况下,这样的数据结构.Diez 哦! 感谢您清理 * 我当然有不同 印象. 然后给原始海报:请注意 Python的词典不仅可以是任何一流的对象,还可以 但这很常见 - 无论如何 *我的 *代码很常见 - 字典范围超过列表,元组,功能,其他 词典等等. python不需要更改以使您能够 写下任何.

标签: python

添加新评论