循环遍历复杂的嵌套字典

2024-05-29 11:43:27 发布

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

我有一个非常复杂的字典列表,其中包含嵌套的字典和数组。我在想办法

  1. 使数据列表不那么复杂,然后遍历 光栅点或
  2. 找到一种按原样在光栅点阵列中循环的方法。你知道吗

我最终要做的是循环遍历每个多边形中的所有光栅点,对指定给该光栅点的值执行一个简单的大于或小于(值是高程值)。如果大于给定值,则指定1;如果小于给定值,则指定0。然后我会创建一个单独的1和0的数组,然后我可以得到一个平均值。你知道吗

我已经找到了所有这些点(pts中的allpoints),但是它们在一个字典中的数组中,在一个列表中的另一个字典中(所有多边形),至少我认为,我在组织中可能是错的,因为字典对我来说是相当新的。你知道吗

以下是我的代码:

import numpy as np

def mystat(x):

    mystat = dict()
    mystat['allpoints'] = x
    return mystat

stats = zonal_stats('acp.shp','myGeoTIFF.tif')

pts = zonal_stats('acp.shp','myGeoTIFF.tif', add_stats={'mystat':mystat})

Link到我的文档。任何帮助或指导将不胜感激!你知道吗


Tags: 列表字典光栅stats数组多边形ptstif
1条回答
网友
1楼 · 发布于 2024-05-29 11:43:27

我假设您使用的是rasterstats包。你可以这样做:

threshold_value = 15  # You may change this threshold value to yours

for o_idx in range(0, len(pts)):
    data = pts[o_idx]['mystat']['allpoints'].data
    for d_idx in range(0, len(data)):
        for p_idx in range(0, len(data[d_idx])):
            # You may change the conditions below as you want
            if data[d_idx][p_idx] > threshold_value:
                data[d_idx][p_idx] = 1
            elif data[d_idx][p_idx] <= threshold_value:
                data[d_idx][p_idx] = 0;

它将更新pts列表中的数据

相关问题 更多 >

    热门问题