【问题标题】:Python Counter results to csv filePython 计数器结果到 csv 文件
【发布时间】:2013-04-23 15:52:18
【问题描述】:

这个问题是基于我之前的问题:Python list help (incrementing count, appending)

当我打印 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是出现次数,

如何访问 count 的结果并获得所需的部分?谢谢。

【问题讨论】:

    标签: python csv counter


    【解决方案1】:

    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
    • 我尝试了 sorted(your_counter.iteritems()) ,但它是按我需要计数的位置排序的。谢谢。
    • 改用for key, count in reversed(your_counter.most_common()):
    • 避免使用 long 作为变量名,因为它是保留字 ;) 以防万一
    • @ZloySmiertniy:long不是保留字。它是 Python 2 中内置类型的名称,很少需要直接使用。该类型在 py3 中完全消失了。
    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2015-12-13
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多