我正在尝试连接google的地理编码api和github api来解析用户的位置并创建一个列表。
我想创建的数组(list)如下所示:
location, lat, lon, count
San Francisco, x, y, 4
Mumbai, x1, y1, 5其中location、lat和lon是从Google geocode解析而来,count是该位置的出现次数。E每次添加新位置时:如果它存在于列表中,则计数递增,否则将其附加到具有location、lat、lon的数组(列表),计数应为1。
另一个例子:
location, lat, lon, count
Miami x2, y2, 1 #first occurrence
San Francisco, x, y, 4 #occurred 4 times already
Mumbai, x1, y1, 5 #occurred 5 times already
Cairo, x3, y3, 1 #first occurrence我已经可以从github获取用户的位置,也可以从google获取地理编码数据。我只需要在python中创建这个数组,这是我正在努力解决的问题。
有谁可以帮我?谢谢。
发布于 2013-04-23 23:15:46
这在某种程度上是所有其他推荐想法的融合:
from collections import defaultdict
inputdata = [('Miami', 'x2', 'y2'),
('San Francisco', 'x', 'y'),
('San Francisco', 'x4', 'y4'),
('Mumbai', 'x1', 'y1'),
('Cairo', 'x3', 'y3')]
counts, coords = defaultdict(int), defaultdict(list)
for location, lat, lon in inputdata:
coords[location].append((lat,lon))
counts[location] += 1
print counts, coords这使用了defaultdict,正如您所看到的,它允许使用一种简单的方法来同时执行以下操作:
返回:
defaultdict(<type 'int'>, {'Miami': 1, 'San Francisco': 2, 'Cairo': 1, 'Mumbai': 1})
defaultdict(<type 'list'>, {'Miami': [('x2', 'y2')], 'San Francisco': [('x', 'y'), ('x4', 'y4')], 'Cairo': [('x3', 'y3')], 'Mumbai': [('x1', 'y1')]})这个答案做了一个(未经验证的)假设,即您的经度/经度对的粒度不太可能重复,但实际上您只对按城市进行计数感兴趣。
https://stackoverflow.com/questions/16172268
复制相似问题