首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python列表帮助(递增计数,追加)

Python列表帮助(递增计数,追加)
EN

Stack Overflow用户
提问于 2013-04-23 22:40:55
回答 5查看 1.9K关注 0票数 2

我正在尝试连接google的地理编码api和github api来解析用户的位置并创建一个列表。

我想创建的数组(list)如下所示:

代码语言:javascript
运行
复制
location, lat, lon, count
San Francisco, x, y, 4
Mumbai, x1, y1, 5

其中location、lat和lon是从Google geocode解析而来,count是该位置的出现次数。E每次添加新位置时:如果它存在于列表中,则计数递增,否则将其附加到具有location、lat、lon的数组(列表),计数应为1。

另一个例子:

代码语言:javascript
运行
复制
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中创建这个数组,这是我正在努力解决的问题。

有谁可以帮我?谢谢。

EN

Stack Overflow用户

发布于 2013-04-23 23:15:46

这在某种程度上是所有其他推荐想法的融合:

代码语言:javascript
运行
复制
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,正如您所看到的,它允许使用一种简单的方法来同时执行以下操作:

  1. 按城市统计出现的次数
  2. 保持经纬度对完好无损

返回:

代码语言:javascript
运行
复制
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')]})

这个答案做了一个(未经验证的)假设,即您的经度/经度对的粒度不太可能重复,但实际上您只对按城市进行计数感兴趣。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16172268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档