我认为列表推导可能会给我这个,但我不确定: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抓一个站点.我获得与urlib模块的源HTML代码,但我需要也刮由一个JavaScript功能(这是包含在HTML源)中产生一些HTML代码.这个功能在网站中的作用是当你按下一个按钮时输出一些HTML代码.如何用python代码"按下"这个按钮?scrapy可以帮助我吗?我用firebug捕获了POST请求,但是当我尝试在url上传递它时,我收到403错误.有什么建议?
我正在使用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
我试图找出找到我元素的最有效方法.继我的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) 我最近开始使用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需要保持"简单",因为它用于与第三方互操作.
解决这个约束的最佳方法是什么?
谢谢!
我在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) 我认为面向对象编程被高估了,但我想学习这个范例.我一直在尝试使用QT 4在PHP 5和C++中执行此操作.不幸的是,我倾向于以结构化方式编程,我不使用很多继承也不使用多个实例.我想我必须学习一种纯粹的面向对象语言,迫使我使用上述功能.
我认为最好的选择可能是学习Ruby.您能否确认或命名更好的替代方案?
我主要在x86-64 Linux上工作.
使用最新版本的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) 我经常在emacs中使用命令grep-find来搜索我的源文件,但是它总是在临时文件和备份文件中找到匹配项等等.grep-find的默认命令是:
find . -type f -print0 | xargs -0 -e grep -nH -e
Run Code Online (Sandbox Code Playgroud)
我知道我可以在运行之前对其进行修改以满足我的需求,但是如何更改它以使其在启动时正确?
python ×3
.net ×1
asp.net-mvc ×1
attributes ×1
browser ×1
class ×1
count ×1
dot-emacs ×1
easymock ×1
element ×1
emacs ×1
find ×1
generics ×1
grep ×1
html-helper ×1
java ×1
javascript ×1
jquery ×1
list ×1
nhibernate ×1
oop ×1
python-2.6 ×1
xml ×1
zend-form ×1
zend-view ×1