小编Ric*_*ard的帖子

在字典列表中,基于一个键/值匹配字典?

在Python中,我有一个字典列表:

mylist = [ { 'name': 'James', 'school': 'UCLA', 'date_joined': 2001 },
           { 'name': 'Jack', 'school': 'UCLA', 'date_joined': 2001 },
           { 'name': 'Fisher', 'school': 'NYU', 'date_joined': 2003 }]
Run Code Online (Sandbox Code Playgroud)

如何根据名称和学校密钥/值检查某个词典是否与现有记录匹配?

所以:

example1 = { 'name': 'James', 'school': 'UCLA', 'date_joined': 2007 }
example1 = { 'name': 'James', 'school': 'UCLA', 'date_joined': 2001 }
Run Code Online (Sandbox Code Playgroud)

应该都匹配,但是

example3 = { 'name': 'James', 'school': 'MIT', date_joined': 2001 }
Run Code Online (Sandbox Code Playgroud)

不应该。

显然有:

for m in myList:
    if (m['name']==example['name'] and m['school']==example['school']):
        match_found = True
        continue
Run Code Online (Sandbox Code Playgroud)

但是有没有更紧凑的方法?

python

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

找到一组latlng的质心(简单平均值)

我想使用客户端JavaScript来查找一组纬度+经度(实际上是Google LatLng对象)的质心,使用简单的平均值计算.

我看到之前在Stack Overflow上已经多次询问过类似的问题,但我找不到一个直截了当的JavaScript答案.(这可能只是我的谷歌搜索失败,如果这是重复的道歉.)

我有类似的东西,但它不适用于平均纬度为179和-179的情况,因此质心应该是180而不是0.

var avg_lat, avg_lng;
for (var i = 0; i < google_latlngs.length; i++) { 
    avg_lat += google_latlngs[0].lat();
    avg_lng += google_latlngs[1].lng();
}
avg_lat = avg_lat / google_latlngs.length; 
avg_lng = avg_lng / google_latlngs.length; 
Run Code Online (Sandbox Code Playgroud)

我需要在客户端JavaScript中有效地执行此操作,并且我的点数不可能超过几公里,因此在这种情况下,大圆距离或任何花哨都不是必需的.

谢谢你的帮助.

更新:好的,任何在JavaScript中查找质心的方法都可以.

javascript google-maps geospatial latitude-longitude

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

仅在支持的浏览器中下载和执行脚本?

对不起,这几乎肯定是重复的,但我一直在搜索StackOverflow并且无法找到答案.希望如果我用最一般的术语来表达它,它将来会帮助别人.

我在我的网页中包含一些脚本,这些脚本在Chrome/FF/Opera/Safari/IE9中非常出色,但与IE8或以下版本不兼容(对于信息,它是非常棒的D3.js).

如何使用确保页面在IE <9中正常失败?

理想情况下,我更喜欢IE <9用户

  • 根本不要下载D3.js外部脚本
  • 在我的页面脚本中向他们显示"抱歉,这对您不起作用"消息,而不是尝试使用D3库并导致JavaScript错误.

HTML页面中的当前代码:

<script type="text/javascript" src="/js/d3.js"></script>
<script type="text/javascript" src="/js/mylocal.js"></script>
Run Code Online (Sandbox Code Playgroud)

在JavaScript文件中,从开头行:

var vis = d3.select("#vis")
.append("svg:svg")
.attr("width", w)
.attr("height", h)
.append("svg:g");
// etc
Run Code Online (Sandbox Code Playgroud)

我应该如何更改这些以确保只有支持D3的浏览器才会下载并尝试执行它?

html javascript

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

d3.js:如何添加数据密钥?

我正在学习D3.js并试图了解与流程图一起使用的数据键.我想改编一下官方的流图示例:

在此输入图像描述

...以便每个路径都有一个显式数据键,以便鼠标悬停记录数据键.

官方示例添加路径如下:

var area = d3.svg.area()
   .x(function(d) { console.log('x', d.data); return d.x * w / mx; })
   .y0(function(d) { return h - d.y0 * h / my; })
   .y1(function(d) { return h - (d.y + d.y0) * h / my; });
vis.selectAll("path")
 .data(data0) 
 .enter().append("path")
 .style("fill", function() { return color(Math.random()); })
 .attr("d", area);
Run Code Online (Sandbox Code Playgroud)

我尝试调整代码如下,但我不知道如何更改data0(当前是数组的数组)的结构来实现我想要的:

vis.selectAll("path")
 .data(data0, function(d) { return d.name }) // Add key function
 .enter().append("path")
 .style("fill", function() { return color(Math.random()); })
 .attr("d", area) …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js stream-graph

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

复选框.change()上的火灾事件但是**复选框出现后会被选中?

我正在使用jQuery捕获复选框上的单击事件并调用函数.

我的问题是这样的:我正在调用的函数执行起来相对较慢,因此用户在复选框看起来被检查之前看到了可见的延迟,这使得界面看起来缓慢且不优雅.

这个小提琴演示了这个问题:http://jsfiddle.net/ZkUgq/4/或这里的代码:

function slowFunction() { 
   var mystr;
    for (var i = 0; i < 5000000; i++) { 
        mystr += ' ';
    }
}
$('#mycheckbox').click(function() { 
   slowFunction();
});
Run Code Online (Sandbox Code Playgroud)

有没有办法可以改变事物,以便点击事件仍然会触发slowFunction,但是不会延迟复选框中勾号的出现?

理想情况下,我想要的是onChecked复选框的事件,但我不知道是否存在.

注意:我问的原因是因为我使用的是iPhone复选框,而且当我的复选框更改时我调用的功能相对较慢使它看起来很迟钝,而且根本不像iPhone那样:)

javascript jquery

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

使用来自Python的Google Maps地理编码器和urllib2

我正在尝试使用带有Python和JSON的Google Maps地理编码器,但一直被告知我有一个错误的请求:

add = "Buckingham Palace, London, SW1A 1AA"
geocode_url = "https://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false&region=uk" % add
print geocode_url
req = urllib2.urlopen(geocode_url)
jsonResponse = json.loads(f.read())
pprint.pprint(nest) 
Run Code Online (Sandbox Code Playgroud)

这失败了urllib2.HTTPError: HTTP Error 400: Bad Request.

但如果我只是复制和粘贴

https://maps.googleapis.com/maps/api/geocode/json?address=Buckingham%20Palace,%20London,%20SW1A%201AA&sensor=false&region=uk
Run Code Online (Sandbox Code Playgroud)

进入浏览器栏,它工作正常.

我的要求有什么问题?

python json google-maps geocoding

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

加载速度更好:大型 JSON 文件,还是需要处理的小型 CSV 文件?

为了获得最大的加载速度和页面效率,最好是:

  1. 一个 18MB JSON 文件,包含一个字典数组,我可以加载它并开始将其用作本机 JavaScript 对象(例如var myname = jsonobj[1]['name'])。
  2. 一个 4MB 的 CSV 文件,我需要使用 jquery.csv 插件读取该文件,然后使用查找来引用:)var nameidx = titles.getPos('name'); var myname = jsonobj[1][nameidx]

我并不是真的期望有人给我一个明确的答案,但一般性的怀疑会非常有用。或者有关如何测量的提示 - 也许我可以使用开发人员工具检查加载速度和效率之间的权衡。

我怀疑,在 (1) 中使用本机 JavaScript 对象带来的任何额外效率都会被小得多的 CSV 文件所抵消,但我想知道其他人是否也这么认为。

javascript csv jquery

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

查找数组的所有*唯一组合*

我想在 JavaScript 中找到数组元素位置的所有唯一组合

这是我的数组:

var places = ['x', 'y', 'z'];
Run Code Online (Sandbox Code Playgroud)

我想找到以下组合:[0,1]、[0,2]、[1,2]。

目前我有功能但有点笨拙:

for (var i = 0; i < places.length; i++) {
    for (var j = 0; j < places.length; j++) {
        if ((j > i) && (j != i)) { 
            console.log(i, j);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来做到这一点?

javascript arrays permutation

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

Require.JS:加载彼此依赖的模块?

我刚刚开始使用Require.JS,我有一个(希望)简单的问题.

我正在使用jQuery和SlickGrid,我已将所有模块加载到main.js文件的顶部,如下所示:

require(["jquery", "underscore-1.3.1", "backbone-0.9.1", 
     "plugins/jquery.event.drag-2.0.min", "plugins/slick.core", 
     "plugins/slick.grid", "plugins/slick.dataview"], function($) { ...
Run Code Online (Sandbox Code Playgroud)

这在Chrome和Firefox中运行正常,但在Safari中我收到一些错误警告:

SlickGrid requires jquery.event.drag module to be loaded
require-jquery.js:1632Error: Module name 'underscore' has not been loaded yet 
   for context: _http://requirejs.org/docs/errors.html#notloaded
Run Code Online (Sandbox Code Playgroud)

SlickGrid依赖于jquery.event.drag而Backbone依赖于Underscore,看起来Safari不喜欢它们无法看到对方.

难道我做错了什么?有没有办法可以解决这个问题?

javascript requirejs

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

使用Mechanize进行ASPX抓取:无法检索表单?

我正在尝试使用Python Mechanize 抓取.aspx网页.但ParseError: unexpected '[' char in declaration即使我手动删除DTD,我仍然会收到一个有趣的错误.

这是我的完整代码:

url = 'http://corporate.marksandspencer.com/aboutus/where/international_stores'
browser = mechanize.Browser()
browser.open(url)
browser.select_form(nr=0)
Run Code Online (Sandbox Code Playgroud)

ParseError: unexpected '[' char in declaration在最后一行失败了.任何人都可以建议可能出错的地方?

python screen-scraping mechanize web-scraping

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