将Python计数器结果导出为CSV文件

5
这个问题基于我的先前的问题:Python列表帮助(增加计数,追加) 当我执行print c时,我能够创建以下输出:
Counter({(u'New Zealand', 174.885971, -40.900557): 1, (u'Ohio, USA', -82.90712300000001, 40.4172871): 1})

这正是我想要的,现在我想知道如何将其写入csv文件。每行代表一个新的位置,经度/纬度和计数。

我想循环遍历计数器并访问这些部分: writer.writerow(["A",“B”,“C”]);

A是位置,例如新西兰, B是经纬度, C是出现次数。

如何访问计数结果并获取这些所需部分?谢谢。

1个回答

8

Counter 是标准 dict 类的一个子类;您可以使用 .iteritems() (Python 2) 或者只用 .items() (Python 3) 循环遍历字典中的项目:

for key, count in your_counter.iteritems():
    location, lat, long = key
    writer.writerow([location, lat, long, count])

这将写入4列,其中有2个单独的列用于纬度和经度。如果您想将它们合并为一个列,比如使用斜杠分隔两个坐标的字符串,请使用字符串格式化:

for key, count in your_counter.iteritems():
    location, lat, long = key
    writer.writerow([location, '{}/{}'.format(lat, long), count])

我该如何根据计数升序排序它们?@Martijn - chatu
我尝试使用sorted(your_counter.iteritems()),但它按位置排序,而我需要按计数排序。谢谢。 - chatu
请使用for key, count in reversed(your_counter.most_common()): - Martijn Pieters
避免使用long作为变量名,因为它是一个保留字;)以防万一。 - lesolorzanov
@ZloySmiertniy:long不是保留字。它是Python 2中内置类型的名称,你很少需要直接使用它。在py3中,这种类型已经完全消失了。 - Martijn Pieters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接