筛选器返回空数组

2024-10-05 22:42:34 发布

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

我试图从列表中提取一些值。你知道吗

https://hastebin.com/ugijekegip.json

dimension_hour正确筛选列表,但是dimension_days会被分配一个空列表[],即使它们使用相同的列表进行筛选

dimensions_day = []
dimensions_hour = []
for element in list:
    if element['dimensionalValues'] is not None:
        dimensions_day = filter(lambda dimVal:
            dimVal['metricOption'] == 'BREAKDOWN_DAY_OF_WEEK',
            element['dimensionalValues']
        )

        dimensions_hour = filter(lambda dimVal:
             dimVal['metricOption'] == 'BREAKDOWN_HOUR_OF_DAY',
             element['dimensionalValues']
        )

Tags: oflambdahttps列表elementfilterdimensionsdimension
2条回答

因为每次迭代都会覆盖循环中的“dimension*”列表。 因此,列表中的最后一个元素是hour,这导致了dimensions_hour的元素。你知道吗

Pluslist是一个保留关键字。别用它。你知道吗

for element in elements:
    if 'dimensionalValues' in element:
        dday = filter(lambda dimVal:
            dimVal['metricOption'] == 'BREAKDOWN_DAY_OF_WEEK',
            element['dimensionalValues']
        )
        dimensions_day.extend(dday) # add day to list

        dhour = filter(lambda dimVal:
             dimVal['metricOption'] == 'BREAKDOWN_HOUR_OF_DAY',
             element['dimensionalValues']
        )
        dimensions_hour.extend(dhour) # add hour to list

print(list(dimensions_day))
print(list(dimensions_hour))

尺寸/天

[{'timeDimension': {'dayOfWeek': 'SATURDAY'}, 'metricOption': 'BREAKDOWN_DAY_OF_WEEK', 'value': '96'}]

尺寸/小时

[{'timeDimension': {'timeOfDay': {'hours': 11}}, 'metricOption': 'BREAKDOWN_HOUR_OF_DAY', 'value': '10'}, {'timeDimension': {'timeOfDay': {'hours': 12}}, 'metricOption': 'BREAKDOWN_HOUR_OF_DAY', 'value': '16'}]

通过重新分配,dimensions_hour = ...覆盖;最后的结果是最后一次循环迭代的筛选列表;使用dimensions_hour += ...而不是覆盖来累加。你知道吗

dimensions_day = []
dimensions_hour = []
for element in list:
    if element['dimensionalValues'] is not None:
        dimensions_day += filter(lambda dimVal:
             dimVal['metricOption'] == 'BREAKDOWN_DAY_OF_WEEK',
             element['dimensionalValues']
        )

        dimensions_hour += filter(lambda dimVal:
             dimVal['metricOption'] == 'BREAKDOWN_HOUR_OF_DAY',
             element['dimensionalValues']
        )

相关问题 更多 >