小编Rom*_*n G的帖子

Python collections.Counter:most_common复杂性

我想知道python 2.7中对象most_common提供的函数的复杂性是多少collections.Counter.

更具体地说,是Counter保持某种排序列表,当它被更新,允许执行的most_common速度比运行O(n)n添加计数器的(唯一的)项目的数量?为了您的信息,我正在处理一些大量的文本数据,试图找到第n个最常见的令牌.

我检查了官方文档(https://docs.python.org/2/library/collections.html#collections.Counter),CPython wiki(https://wiki.python.org/moin/TimeComplexity)但我可以找不到答案.先感谢您!

罗曼.

python counter time-complexity python-collections

27
推荐指数
2
解决办法
7626
查看次数

Selectize.js:静默添加项目时触发的onItemAdd事件

使用Selectize.js,我正在尝试初始化动态预先选择列表中的一个项而不触发onItemAdd事件.在以下代码中,即使silent参数是真实的,也会触发事件:

$(function () {
    $('select').selectize({
        onItemAdd: function () {
            alert("Add item");
        }
    });
    // this triggers an the event
    $('select')[0].selectize.addItem('2', true);
});
Run Code Online (Sandbox Code Playgroud)

JSFiddle:http://jsfiddle.net/zuzat0dc/1/

根据文件:

  • addItem(value, silent):"选择"一个项目.将其添加到当前插入符号位置的列表中.如果"沉默"是真实的,则不会对原始输入触发更改事件.

知道如何避免触发onItemAdd事件吗?在silent参数b0rked或者我应该使用change的事件呢?

javascript jquery selectize.js

9
推荐指数
2
解决办法
6676
查看次数

发出HTTP请求时,Python子进程会以静默方式崩溃

我在组合多处理,请求(或urllib2)和nltk时遇到了问题.这是一个非常简单的代码:

>>> from multiprocessing import Process
>>> import requests
>>> from pprint import pprint
>>> Process(target=lambda: pprint(
        requests.get('https://api.github.com'))).start()
>>> <Response [200]>  # this is the response displayed by the call to `pprint`.
Run Code Online (Sandbox Code Playgroud)

关于这段代码的作用的更多细节:

  1. 导入一些必需的模块
  2. 开始子进程
  3. 从子进程向'api.github.com'发出HTTP GET请求
  4. 显示结果

这很有效.导入nltk时出现问题:

>>> import nltk
>>> Process(target=lambda: pprint(
        requests.get('https://api.github.com'))).start()
>>> # nothing happens!
Run Code Online (Sandbox Code Playgroud)

在导入NLTK之后,请求实际上会以静默方式崩溃线程(如果尝试使用命名函数而不是lambda函数,print在调用之前和之后添加一些语句,您将看到执行在调用时停止requests.get)有没有人知道NLTK可以解释这种行为,以及如何克服这个问题?

这是我正在使用的版本:

$> python --version
Python 2.7.5
$> pip freeze | grep nltk
nltk==2.0.5
$> pip freeze | grep requests
requests==2.2.1
Run Code Online (Sandbox Code Playgroud)

我正在运行Mac OS X v.10.9.5.

谢谢!

python nltk python-2.7 python-requests python-multiprocessing

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

使用 pymongo 创建时区感知的 ISODate

我正在寻找一种在 mongoDB 中存储时区感知datetime对象的方法。

我在这里读到:使用 pyMongo 创建 ISODate,使用 pymongo 在 MongoDB 中存储datetime对象将导致ISODate存储一个对象(或者从 shell 查询时看起来像这样的对象)

使用该datetime.replace(tzinfo=[...])方法,有一种方法可以使日期时间对象了解其时区。不幸的是,当将此类对象存储在 mongoDB 中时,时区信息似乎丢失了。

我的问题是:有没有办法将时区存储在 ISODate 对象本身中,以便它看起来像这样:ISODate("2012-07-14T01:00:00+01:00")在查询 shell 时,以便稍后用 pymongo 重新加载时 datetime 对象仍然能够识别时区?

非常感谢你的帮助!

python timezone datetime mongodb pymongo

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

Python NLTK用wordnet对'进一步'这个词进行简化

我正在使用python,NLTK和WordNetLemmatizer开发一个变形器.这是一个输出我期望的随机文本

from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
lem = WordNetLemmatizer()
lem.lemmatize('worse', pos=wordnet.ADJ) // here, we are specifying that 'worse' is an adjective
Run Code Online (Sandbox Code Playgroud)

输出: 'bad'

lem.lemmatize('worse', pos=wordnet.ADV) // here, we are specifying that 'worse' is an adverb
Run Code Online (Sandbox Code Playgroud)

输出: 'worse'

好吧,这里的一切都很好.行为与其他形容词相同'better'(对于不规则形式)或'older'(注意相同的测试'elder'将永远不会输出'old',但我猜wordnet不是所有现有英语单词的详尽列表)

尝试用这个词时我的问题是'furter':

lem.lemmatize('further', pos=wordnet.ADJ) // as an adjective
Run Code Online (Sandbox Code Playgroud)

输出: 'further'

lem.lemmatize('further', pos=wordnet.ADV) // as an adverb
Run Code Online (Sandbox Code Playgroud)

输出: 'far'

这是一个'worse'字的完全相反的行为!

谁能解释一下为什么?这是来自wordnet synsets数据的错误还是来自我对英语语法的误解?

如果问题已经得到解答,请原谅我,我已经搜索谷歌和SO,但是当指定关键词"进一步"时,我可以找到任何相关但是因为这个词的受欢迎程度而混乱...

提前谢谢你,Romain G.

python nltk wordnet lemmatization

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