如何计算约会在列表中出现的次数?

2024-10-01 22:40:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有个问题。我正在尝试创建一个脚本,该脚本将查看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方法创建字典,并创建了一个所有技术人员的主列表,其值为(date,count)。我现在如何使用此词典并打印csv文件?我希望文件有技术员的名字,日期和日期计数。这可能吗?在


Tags: 文件csvtestimportfordatetime字典cursor
1条回答
网友
1楼 · 发布于 2024-10-01 22:40:24

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

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})

相关问题 更多 >

    热门问题