簡體   English   中英

過濾器返回空數組

[英]Filter return empty array

我正在嘗試從列表中提取一些值。

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']
        )

通過重新分配, 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']
        )

因為循環中的“ dimension *”列表對於每次迭代都會被覆蓋。 因此,您列表中的最后一個元素是hour ,這導致了dimensions_hour元素。

加號list是保留關鍵字。 不要使用它。

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

Dimensions_day

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

Dimensions_hour

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM