Python ArcPy - 具有最高字段值的打印图层

Python ArcPy - Print Layer with highest field value

我有一些 python 代码遍历我的 ArcGIS 项目中的图层,并打印出图层名称及其在字段 "SUM_USER_VisitCount" 中的相应最大值。 Output Picture

我想让代码做的只是打印出具有绝对最高值的图层的图层名称和 SUM_USER_VisitCount 字段值。 Desired Output

我一直无法弄清楚如何实现这一点,也无法在网上找到任何东西。有人可以帮我实现我想要的输出吗?

抱歉,如果代码布局有点奇怪。当我将它粘贴到 "code sample"

时它被弄乱了

这是我的代码:

import arcpy
import datetime
from datetime import timedelta
import time


#Document Start Time in-order to calculate Run Time
time1 = time.clock()

#assign project and map frame
p = 
arcpy.mp.ArcGISProject(r'E:\arcGIS_Shared\Python\CumulativeHeatMaps.aprx')
m = p.listMaps('Map')[0]

Markets = [3000]


### Centers to loop through

CA_Centers = ['Castro', 'ColeValley', 'Excelsior', 'GlenPark', 
'LowerPacificHeights', 'Marina', 'NorthBeach', 'RedwoodCity', 'SanBruno', 
'DalyCity']   

for Market in Markets:
    print(Market)
    for CA_Center in CA_Centers:


        Layers = 
 m.listLayers("CumulativeSumWithin{0}_{1}_Jun2018".format(Market,CA_Center))

        fields = ['SUM_USER_VisitCount']


        for Layer in Layers:
            print(Layer)


            sqlClause = (None, 'ORDER BY ' + 'SUM_USER_VisitCount') # + 'DESC'

            with arcpy.da.SearchCursor(in_table = Layer, field_names = fields, 
            sql_clause = sqlClause) as searchCursor:
                print (max(searchCursor))

您可以创建一个字典来存储每个查询的结果,然后在最后打印出最高的结果。

results_dict = {}
for Market in Markets:
    print(Market)
    for CA_Center in CA_Centers:


        Layers = 
 m.listLayers("CumulativeSumWithin{0}_{1}_Jun2018".format(Market,CA_Center))

        fields = ['SUM_USER_VisitCount']


        for Layer in Layers:
            print(Layer)


            sqlClause = (None, 'ORDER BY ' + 'SUM_USER_VisitCount') # + 'DESC'

            with arcpy.da.SearchCursor(in_table = Layer, field_names = fields, 
            sql_clause = sqlClause) as searchCursor:
                print (max(searchCursor))
                results_dict[Layer] = max(searchCursor)

# get key for dictionary item with the highest value
highest_count_layer = max(results_dict, key=results_dict.get)
print(highest_count_layer)
print(results_dict[highest_count_layer])