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

Python 如何计算一个日期出现在列表中的次数?,python,csv,counting,arcpy,Python,Csv,Counting,Arcpy,所以我有个问题。我正在尝试创建一个脚本,该脚本将查看ArcMap中的一个图层(我们使用10.2.2)创建一个csv文件,最终输出将包含技术人员的姓名和他们在特定日期查看的拖拉机数量。要做到这一点,我认为我需要创建一个特定于每个技术人员的字典,并将日期作为键,将其出现的次数作为值 这就是我被卡住的地方。如何创建统计日期出现次数的词典 到目前为止,我已经包含了我的代码,我非常不知道该去哪里,或者我是否在正确的领域。此外,我不确定如何使所有三列我需要的csv文件(名称,日期,计数) 我真的需要一些帮助

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

这就是我被卡住的地方。如何创建统计日期出现次数的词典

到目前为止,我已经包含了我的代码,我非常不知道该去哪里,或者我是否在正确的领域。此外,我不确定如何使所有三列我需要的csv文件(名称,日期,计数)

我真的需要一些帮助!谢谢你们提前帮助我

更新


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

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

这张照片是:
柜台({'5-11-15':2,'5-12-15':1})

Hi Elizabeth,欢迎来到stackoverflow!您可以通过将示例代码减少到重现问题所需的最小值来改进问题。请在帮助中心阅读“”。另外,请看一看,python程序员对命名和格式化约定非常敏感。我尝试过类似的方法,但我认为我做得不对。我多次以相同的条目结束,而不是计数。例如,我会让它打印计数器,它会说5-11-2015:1多次。你能给我一个编码示例来帮助我吗?柜台对我来说是新的。:)另外,我想如何将计数器字典转换成csv,这样我就可以打印出日期、计数和技术人员姓名?我添加了一个简短的代码片段。我不知道为什么你不能让它工作-这很简单。你想数的对象到底是什么?它们是字符串还是其他行为更复杂的对象?为了让计数器为您工作,当您希望两个对象表示相同的日期时,它们必须进行相等的比较。计数器与字典具有相同的语义,因此您可以使用
items()
(假设为Python 3)循环它们的元素。然后,以所需的任何格式打印键和值。
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
from collections import Counter
dates = ['5-11-15','5-12-15','5-11-15']
c = Counter()
c.update(dates) 
print(c)