问题列表 - 第20227页

Python的列表推导(理想情况下)可以在SQL中执行相当于'count(*)... group by ...'的操作吗?

我认为列表推导可能会给我这个,但我不确定:Python(2.6)中的任何优雅解决方案通常用于选择列表中的唯一对象并提供计数?

(我已经定义了一个__eq__定义我的对象定义的唯一性).

所以在RDBMS-land中,这样的事情:

CREATE TABLE x(n NUMBER(1));
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(1);
INSERT INTO x VALUES(2);

SELECT COUNT(*), n FROM x
GROUP BY n;
Run Code Online (Sandbox Code Playgroud)

这使:

COUNT(*) n
==========
3        1
1        2
Run Code Online (Sandbox Code Playgroud)

所以,这是我在Python中的等效列表:

[1,1,1,2]
Run Code Online (Sandbox Code Playgroud)

我想要与上面给出的SQL SELECT相同的输出.

编辑:我给这里的例子是简化的,我其实处理用户定义的对象实例的列表:只是为了完整性我有额外的代码,我需要得到整个事情的工作:

import hashlib

def __hash__(self):
    md5=hashlib.md5()
    [md5.update(i) for i in self.my_list_of_stuff]
    return int(md5.hexdigest(),16)
Run Code Online (Sandbox Code Playgroud)

__hash__需要使用该方法才能使set转换工作(我选择了在2.6中工作的列表理解思想[尽管事实上我知道这涉及效率低下(参见注释) - 我的数据集足够小,因为它不是问题]).my_list_of_stuff上面是我的对象定义中的(字符串)列表.

python list count python-2.6

5
推荐指数
4
解决办法
4607
查看次数

用python生成的javascript生成的html

我需要用python抓一个站点.我获得与urlib模块的源HTML代码,但我需要也刮由一个JavaScript功能(这是包含在HTML源)中产生一些HTML代码.这个功能在网站中的作用是当你按下一个按钮时输出一些HTML代码.如何用python代码"按下"这个按钮?scrapy可以帮助我吗?我用firebug捕获了POST请求,但是当我尝试在url上传递它时,我收到403错误.有什么建议?

javascript python browser screen-scraping

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

使用ViewScript装饰器时覆盖Zend_Form无线电元素上的分隔符

我正在使用ViewScripts来装饰我的表单元素.使用无线电元素时,通常可以覆盖分隔符,但在使用ViewScript时会忽略覆盖.

当我使用下面的调用和ViewScript时,无线电元素用'<br />'而不是我指定的空格分隔.如果保留默认装饰器,则覆盖工作.

$this->addElement('radio', 'active', array(
    'disableLoadDefaultDecorators' => true,
    'decorators' => array(array('ViewScript', array('viewScript' => 'form/multi.phtml'))),
    'label' => 'Active',
    'required' => true,
    'multiOptions' => array('1' => 'Yes', '0' => 'No',),
    'value' => '1',
    'separator' => ' ',
    'filters' => array(),
    'validators' => array(),
));
Run Code Online (Sandbox Code Playgroud)

ViewScript:

<div class="field <?php echo strtolower(end(explode('_',$this->element->getType()))) ?><?php if($this->element->hasErrors()): ?> errors<?php endif; ?>" id="field_<?php echo $this->element->getId(); ?>">
    <?php if (0 < strlen($this->element->getLabel())): ?>
        <?php echo $this->formLabel($this->element->getName(), $this->element->getLabel());?>
    <?php endif; ?>
    <span class="value"><?php echo $this->{$this->element->helper}(
        $this->element->getName(),
        $this->element->getValue(),
        $this->element->getAttribs(),
        $this->element->getMultiOptions() …
Run Code Online (Sandbox Code Playgroud)

zend-framework zend-form zend-decorators zend-view zend-form-element

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

Jquery - 如何使用类和属性查找元素

我试图找出找到我元素的最有效方法.继我的smy结构:

<div class="a" customattrib="2">
Run Code Online (Sandbox Code Playgroud)

为了找到这个元素,我可以这样做:

$("div.a [customattrib='2']")
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,还有另一种方法吗?

没有课程,我可以获得价值,但我不认为这对我的结构来说足够有效:

$("div [customattrib='2']")
Run Code Online (Sandbox Code Playgroud)

jquery attributes element class find

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

使用IList <T>的NHibernate和XML序列化

我最近开始使用NHibernate,总的来说很喜欢它.

直到遇到需要序列化为XML并返回的问题.

我有一个具有多对多关系的类,因此在父类中有一个IList来保存子对象列表.

Class parentClass{
  IList<childClass> childList;

  string varA;
  string varB;
}
Run Code Online (Sandbox Code Playgroud)

我需要能够将其序列化为XML并返回,但显然IList阻止我这样做,因为NHibernate想要控制IList的具体实现,在这种情况下使用Bag.

理想情况下,我想避免使用单独的DTO来替换列表,因为我使用NHibernate的主要动机是能够将它与POCO一起使用,而不必为它制作一个讨厌的框架.

我所知道的能够采取与ISerializable的序列化过程的控制,但同样,这似乎否定首先使用NHibernate来降低复杂性的点.

此外,XML需要保持"简单",因为它用于与第三方互操作.

解决这个约束的最佳方法是什么?

谢谢!

.net xml generics nhibernate xml-serialization

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

如何在Python中编写混淆矩阵?

我在Python中编写了一个混淆矩阵计算代码:

def conf_mat(prob_arr, input_arr):
        # confusion matrix
        conf_arr = [[0, 0], [0, 0]]

        for i in range(len(prob_arr)):
                if int(input_arr[i]) == 1:
                        if float(prob_arr[i]) < 0.5:
                                conf_arr[0][1] = conf_arr[0][1] + 1
                        else:
                                conf_arr[0][0] = conf_arr[0][0] + 1
                elif int(input_arr[i]) == 2:
                        if float(prob_arr[i]) >= 0.5:
                                conf_arr[1][0] = conf_arr[1][0] +1
                        else:
                                conf_arr[1][1] = conf_arr[1][1] +1

        accuracy = float(conf_arr[0][0] + conf_arr[1][1])/(len(input_arr))
Run Code Online (Sandbox Code Playgroud)

prob_arr是我的分类代码返回的数组,示例数组是这样的:

 [1.0, 1.0, 1.0, 0.41592955657342651, 1.0, 0.0053405015805891975, 4.5321494433440449e-299, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.70943426182688163, 1.0, 1.0, 1.0, 1.0]
Run Code Online (Sandbox Code Playgroud)

input_arr是数据集的原始类标签,它是这样的:

[2, 1, …
Run Code Online (Sandbox Code Playgroud)

python machine-learning

51
推荐指数
6
解决办法
11万
查看次数

asp.net mvc中boolean值的Html帮助器

是否有任何html辅助方法在下拉列表中显示布尔值?

asp.net-mvc html-helper

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

寻找纯面向对象的语言

我认为面向对象编程被高估了,但我想学习这个范例.我一直在尝试使用QT 4在PHP 5和C++中执行此操作.不幸的是,我倾向于以结构化方式编程,我不使用很多继承也不使用多个实例.我想我必须学习一种纯粹的面向对象语言,迫使我使用上述功能.

我认为最好的选择可能是学习Ruby.您能否确认或命名更好的替代方案?

我主要在x86-64 Linux上工作.

oop programming-languages

17
推荐指数
8
解决办法
2万
查看次数

EasyMock:在编译时提供您不知道的参数

使用最新版本的EasyMock,我有一个方法,我需要存根.该方法接受一个object参数并返回void.

我正在测试的方法正在调用存根方法.没有惊喜.我的困难在于,作为模拟方法的参数提供的对象是由我正在测试的方法创建的.

我知道我可以解决这个问题,createNiceMock()但有没有办法明确地删除这个方法?

示例代码:

public interface IMockMe { 
    void doSomething(InnerObj obj);
}

public class TestMe {
    IMockMe mockMe; 

    public void testThisMethod() {
        InnerObj obj = new InnerObj();
        mockMe.doSomething(obj);
    }
}

class Tester {
    @Test
    public void testThatDarnedMethod() {
        IMockMe mocked = EasyMock.create(IMockMe.class);

        mocked.doSomething( /* what goes here? */);
        EasyMock.expectLastCall();

        TestMe testMe = new TestMe(mocked);
        testMe.testThisMethod();

    }
}
Run Code Online (Sandbox Code Playgroud)

java easymock

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

emacs中grep-find的默认字符串

我经常在emacs中使用命令grep-find来搜索我的源文件,但是它总是在临时文件和备份文件中找到匹配项等等.grep-find的默认命令是:

find . -type f -print0 | xargs -0 -e grep -nH -e
Run Code Online (Sandbox Code Playgroud)

我知道我可以在运行之前对其进行修改以满足我的需求,但是如何更改它以使其在启动时正确?

emacs grep dot-emacs

7
推荐指数
2
解决办法
4514
查看次数