目标:我正在尝试计算所有邮政编码之间的距离,但仅包括25英里或更短距离的邮政编码。
问题:我认为代码应该工作的方式是使用循环拉取邮政编码,然后使用另一个循环拉取另一个邮政编码。问题是,如果zip1 = XXX,它只会抓取以XXX开头的对,并且一旦迭代了所有组合,就无法移动到YYY for zip1。
for line in f_in:
zip1 = line["ZIP"]
lat = line["LAT"]
lon = line["LNG"]
loc = (float(lat),float(lon))
for entry in b_in:
zip2 = entry["ZIP"]
lat2 = entry["LAT"]
lon2 = entry["LNG"]
loc2 = (float(lat2),float(lon2))
combzip = str(zip1)+str(zip2)
print combzip
if not ziplist.has_key(combzip):
dist = haversine.haversine(loc,loc2,miles=True)
if dist > 20:
continue
ziplist[combzip] = [zip1,zip2,dist]
答案 0 :(得分:0)
不知道你是否注意到了,但要小心缩进
for line in f_in:
zip1 = line["ZIP"]
lat = line["LAT"]
lon = line["LNG"]
loc = (float(lat),float(lon))
for entry in b_in:
zip2 = entry["ZIP"]
lat2 = entry["LAT"]
lon2 = entry["LNG"]
loc2 = (float(lat2),float(lon2))
combzip = str(zip1)+str(zip2)
print combzip
if not ziplist.has_key(combzip):
dist = haversine.haversine(loc,loc2,miles=True)
if dist > 20:
continue
ziplist[combzip] = [zip1,zip2,dist]