如何计算日期在列表中出现的次数?

How do I count the number of times a date shows up in a list?

所以我遇到了问题。我正在尝试创建一个脚本来查看 ArcMap 中的图层(我们使用 10.2.2)创建一个 csv 文件,最终输出将包含技术人员姓名和他们在特定日期查看的区域数量.为此,我认为我需要创建一个特定于每个技术人员的字典,并将日期作为键,将出现的次数作为值。

这就是我卡住的地方。如何创建一个字典来计算某个日期出现的次数?

到目前为止,我已经包含了我的代码,但我不知道该去哪里,或者我是否在正确的道路上。我也不确定如何制作包含我需要的所有三列(名称、日期、计数)的 csv 文件。

import arcpy, datetime
from arcpy import mapping
from datetime import datetime

# pass layer to script
mxd = mapping.MapDocument("C:\Users\eschlueter\Desktop\test\test.mxd")
layers = mapping.ListLayers(mxd)

inLayer = layers[0]
csvfilename = "C:\Users\eschlueter\Desktop\test\test1.csv"

# Create the search cursor
cursor = arcpy.SearchCursor(inLayer)

##define a dictionary of every technician
elizabethtech = {}
unknowntech = {}

##create a counter for each technician's contracts
Elizabethcontract = 0
Unknowncontract = 0

##Define Variables and Iterate through the rows in cursor
desc = arcpy.Describe(inLayer)
fields =  desc.fields
for field in fields:
    for srow in cursor:
        tech = srow.getValue("Technician")
        ModDate = srow.getValue("ModifiedDate")
        if tech == "Elizabeth Schlueter":
            Elizabethcontract = Elizabethcontract + 1
            ESList = []
            ES = {}
            FormDate = ModDate.strftime("%m-%d-%Y")
            print FormDate
            ESList.append(FormDate)
            c = ESList.count(FormDate)
            ES[FormDate] = c
            print ES

在这方面我真的需要一些帮助!谢谢大家提前帮我!

更新

我已经能够使用 Counter 和 .update 方法创建字典,并创建了一个包含所有技术人员的主列表作为键,值为(日期,计数)。我现在如何使用这本词典并打印一个 csv 文件?我希望该文件包含技术人员姓名、日期和日期计数。这可能吗?

查看 collections 包中的计数器 class。这是一种字典,其中的键将是日期(在您的情况下),而值将是该日期发生次数的累积计数。因此,您为每个员工创建一个计数器而不是字典。当您解析数据时,您会收集每个员工的新日期并将它们添加到计数器中(请参阅 Counter.update)。

from collections import Counter
dates = ['5-11-15','5-12-15','5-11-15']
c = Counter()
c.update(dates) 
print(c)

这会打印: 计数器({'5-11-15': 2, '5-12-15': 1})