相关疑难解决方法(0)

Python 3.3中的哈希函数在会话之间返回不同的结果

我已经在python 3.3中实现了BloomFilter,并且每次会话都得到了不同的结果.深入研究这种奇怪的行为让我进入了内部的hash()函数 - 它为每个会话返回相同字符串的不同哈希值.

例:

>>> hash("235")
-310569535015251310
Run Code Online (Sandbox Code Playgroud)

-----打开一个新的python控制台-----

>>> hash("235")
-1900164331622581997
Run Code Online (Sandbox Code Playgroud)

为什么会这样?为什么这有用?

python security hash hash-collision python-3.3

68
推荐指数
3
解决办法
2万
查看次数

无序Python集的"顺序"

我知道Python中的集合是无序的,但我对它们显示的"顺序"感到好奇,因为它似乎是一致的.它们似乎每次都以相同的方式乱序:

>>> set_1 = set([5, 2, 7, 2, 1, 88])
>>> set_2 = set([5, 2, 7, 2, 1, 88])
>>> set_1
set([88, 1, 2, 5, 7])
>>> set_2
set([88, 1, 2, 5, 7])
Run Code Online (Sandbox Code Playgroud)

......和另一个例子:

>>> set_3 = set('abracadabra')
>>> set_4 = set('abracadabra')
>>> set_3
set(['a', 'r', 'b', 'c', 'd'])
>>>> set_4
set(['a', 'r', 'b', 'c', 'd'])
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么会这样.有帮助吗?

python python-internals

47
推荐指数
2
解决办法
9436
查看次数

Python字典中的整数键是否按优先级排序和排序?

我在OS X Mavericks上使用python 2.7.5,并且看到字典用于生成简单文本菜单的行为异常。我的问题是:Python字典中的整数键是否按优先级排序和排序? 我可以看到mainMenu_1字典(包含一些数字键和一些字符串键)对整数键进行排序,然后以预期的随机顺序显示字符串键。mainMenu_2按预期随机化。

来自python 2.7.8 docs:

“最好将字典视为一组无序的键:值对,要求键是唯一的(在一个字典中)。”

mainMenu_1 = {
   0: 'README',
   1: 'New Set',
   2: 'View Sets',
   3: 'Quiz',
   4: 'Scores',
   5: 'Configuration Settings',
   'Q': 'Quit',
   'a': 'additional letter to test',
   'b': 'additional letter to test'
}

mainMenu_2 = {
   'one': 'README',
   'two': 'New Set',
   'three': 'View Sets',
   'four': 'Quiz',
   'five': 'Scores',
   'six': 'Configuration Settings',
   'Q': 'Quit',
   'd': 'another letter to test'
}

print mainMenu_1.keys()
[0, 1, 2, 3, 4, 5, 'a', …
Run Code Online (Sandbox Code Playgroud)

python dictionary

1
推荐指数
1
解决办法
841
查看次数