我有一个csv文件,我想删除重复的行,但它太大,无法放入内存.我找到了一种方法来完成它,但我的猜测是,这不是最好的方法.
每行包含15个字段和数百个字符,并且需要所有字段来确定唯一性.我没有比较整行来找到重复,而是hash(row-as-a-string)在试图节省内存.我设置了一个过滤器,将数据划分为大致相等数量的行(例如,一周中的几天),并且每个分区都足够小,以使该分区的散列值查找表适合内存.我为每个分区传递一次文件,检查唯一的行并将它们写入第二个文件(伪代码):
import csv
headers={'DayOfWeek':None, 'a':None, 'b':None}
outs=csv.DictWriter(open('c:\dedupedFile.csv','wb')
days=['Mon','Tue','Wed','Thu','Fri','Sat','Sun']
outs.writerows(headers)
for day in days:
htable={}
ins=csv.DictReader(open('c:\bigfile.csv','rb'),headers)
for line in ins:
hvalue=hash(reduce(lambda x,y:x+y,line.itervalues()))
if line['DayOfWeek']==day:
if hvalue in htable:
pass
else:
htable[hvalue]=None
outs.writerow(line)
Run Code Online (Sandbox Code Playgroud)
我想加快速度的一种方法是找到一个更好的过滤器来减少必要的通过次数.假设行的长度均匀分布,可能代替
for day in days:
Run Code Online (Sandbox Code Playgroud)
和
if line['DayOfWeek']==day:
Run Code Online (Sandbox Code Playgroud)
我们有
for i in range(n):
Run Code Online (Sandbox Code Playgroud)
和
if len(reduce(lambda x,y:x+y,line.itervalues())%n)==i:
Run Code Online (Sandbox Code Playgroud)
其中'n'和内存一样小.但这仍然使用相同的方法.
Wayne Werner在下面提供了一个很好的实用解决方案; 我很好奇是否有更好/更快/更简单的方法从算法的角度来做这件事.
PS我只限于Python 2.5.
当我提供ASP.NET页面时,我可以并行渲染页面上的各种控件吗?
我在页面上有一些Telerik控件(RadGrids),当我逐步浏览正在加载的页面时,似乎控件是数据绑定并连续呈现.也许这种行为是因为我迷上了调试器.
无论如何加载页面并在单独的线程上构建选择控件?这在概念上是否可行,还是必须按顺序完成?
我有以下测试类,它使用泛型来重载方法.它在使用javac编译时有效,无法在Eclipse Helios中编译.我的java版本是1.6.0_21.
我读到的所有文章都表明Eclipse是对的,这段代码不适用.但是,使用javac和run编译时,会选择正确的方法.
这怎么可能?
谢谢!
import java.util.ArrayList;
public class Test {
public static void main (String [] args) {
Test t = new Test();
ArrayList<String> ss = new ArrayList<String>();
ss.add("hello");
ss.add("world");
ArrayList<Integer> is = new ArrayList<Integer>();
is.add(1);
is.add(2);
System.out.println(t.getFirst(ss));
System.out.println(t.getFirst(is));
}
public String getFirst (ArrayList<String> ss) {
return ss.get(0);
}
public Integer getFirst (ArrayList<Integer> ss) {
return ss.get(0);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在为iOS的网络应用程序工作.当应用程序打开时,它会检查用户是否有一个存储有用户电子邮件的cookie,然后让用户进入主页,或者将用户重定向到身份验证页面.
这在使用safari时非常有效.我遇到的问题仅在应用程序存储在主屏幕上时才会发生.似乎主屏幕Web应用程序在用户退出应用程序时删除了cookie.
任何强迫应用程序存储该cookie的建议都会非常感激.
谢谢,彼得
我有IE8的问题,我不能使<a>元素透明.我发现了这些相关的SO问题,但我没有运气,因为那里提供的答案:
我试过通过使用" 给布局 " zoom: 1;,但它没有帮助.这是我的测试CSS,取自此页面上的示例:
.test {
background-color: #6374AB;
width: 100%;
color: #ffffff;
zoom: 1;
}
.opaque1 {
opacity: .5;
}
.opaque2 {
filter: alpha(opacity=50);
}
.opaque3 {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
}
.opaque4 {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
filter: alpha(opacity=50);
}
Run Code Online (Sandbox Code Playgroud)
并测试HTML:
<p class="test">Test paragraph without opacity.</p>
<p class="test opaque1">Test paragraph with <code>opacity</code></p>
<p class="test opaque2">Test paragraph with <code>filter</code></p>
<p class="test opaque3">Test paragraph with <code>-ms-filter</code></p>
<p class="test opaque4">Test paragraph with compatibility note</p>
<p>
<a class="test" href="#">Test …Run Code Online (Sandbox Code Playgroud) 我有一个由标准BaseAdapter控制的ListView.
当用户单击按钮时,我希望ListView滚动查看第100条记录.
怎么做的?
我最近在Firefox中有一个错误,因为我选择了错误的脚本类型和intellisense.
<script type="text/jscript">
Run Code Online (Sandbox Code Playgroud)
VS
<script type="text/javascript">
Run Code Online (Sandbox Code Playgroud)
是否有可能从intellisense中删除选项?
编辑:我仍然希望语句完成,只是不是所有选项.
我的一个用户让猫从袋子里拿出来告诉我他们正在使用我的一个免费应用程序,这个应用程序通过广告货币化,但是他们用广告拦截器阻止了广告.他们嘲笑地告诉我,好像我无能为力.
我能为此做些什么吗?有没有办法检测广告被阻止?
嗨我正在使用xslt来显示我的webpart上的链接,我在链接旁边添加了加号图片.但我想在它们之间添加一些空格.我添加了,但这不是真的有效.我错过了什么吗?请在下面找到我的代码.
谢谢.
<xsl:choose>
<!-- do _self -->
<xsl:when test="contains(Link,'xxx')">
<a target="_self">
<xsl:attribute name="href">
<xsl:value-of select="URL"/>
</xsl:attribute>
<xsl:value-of select="Title"/>
</a>
</xsl:when>
<!-- use _blank (new browser window) -->
<xsl:otherwise>
<a target="_blank">
<xsl:attribute name="href">
<xsl:value-of select="URL"/>
</xsl:attribute>
<xsl:value-of select="Title"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
<xsl:choose>
<xsl:when test="Description !=' ' ">
<img class="imageclass" src="/images/plus.gif"></img>
</xsl:when>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)