小编wen*_*hoo的帖子

处理Python字典中的哈希冲突

我有一堆 python 字典,每个字典都包含用户信息,例如:

NewUserDict={'name': 'John', 'age':27}
Run Code Online (Sandbox Code Playgroud)

我将所有这些用户信息字典收集在一个更大的字典容器中,使用每个字典的哈希值作为键(哈希字典?)。

将新的唯一用户添加到字典时,处理哈希冲突的最佳方法是什么?我打算手动将字典与冲突的哈希值进行比较,然后将一些随机数添加到更新的哈希值中,例如:

if new_hash in larger_dictionary:
    if larger_dictionary[new_hash] != NewUserDict:
        new_hash = new_hash + somerandomnumber
Run Code Online (Sandbox Code Playgroud)

处理这个问题的标准方法是什么?或者,我如何知道我是否应该首先担心碰撞?

python hash dictionary

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

ipython笔记本中while循环的优雅中断

我正在ipython笔记本中运行一些数据分析.一台单独的机器收集一些数据并将它们保存到服务器文件夹,我的笔记本会定期扫描该服务器以获取新文件,并对其进行分析.

我在while循环中执行此操作,每秒检查新文件.目前我已将其设置为在分析一些新文件时终止.但是,我希望在按键时终止.

我试过尝试捕捉键盘中断,如下所示:如何通过击键来杀死一个while循环?

但它似乎不适用于ipython笔记本(我使用的是Windows).

使用openCV的keywait对我有用,但我想知道是否有替代方法而不必导入opencv.

我还尝试实现一个中断循环的按钮小部件,如下所示:

from ipywidgets import widgets 
import time
%pylab inline

button = widgets.Button(description='Press to stop')
display(button)

class Mode():
    def __init__(self):
        self.value='running'

mode=Mode()

def on_button_clicked(b):
    mode.value='stopped'

button.on_click(on_button_clicked)

while True:
    time.sleep(1)
    if mode.value=='stopped':
        break
Run Code Online (Sandbox Code Playgroud)

但我发现循环基本上忽略了按下按钮.

interrupt ipython jupyter-notebook ipywidgets

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