[英]Filter return empty array
I'm trying to extract some values from a list. 我正在尝试从列表中提取一些值。
https://hastebin.com/ugijekegip.json https://hastebin.com/ugijekegip.json
dimension_hour
filters correctly the list, but dimension_days
gets assigned an empty list []
even if they are using the same to filter 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']
)
By reassigning, dimensions_hour = ...
overwrites; 通过重新分配, dimensions_hour = ...
被覆盖; The final result is filtered list of the last loop iteration; 最终结果是最后一次循环迭代的过滤列表; Use dimensions_hour += ...
instead to accumulate instead of overwriting. 使用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']
)
Because the "dimension*" lists in your loop gets overwritten for each iteration. 因为循环中的“ dimension *”列表对于每次迭代都会被覆盖。 So happens that the last element in your list is hour
which resulted to an element for dimensions_hour
. 因此,您列表中的最后一个元素是hour
,这导致了dimensions_hour
元素。
Plus list
is a reserved keyword. 加号list
是保留关键字。 don't use it. 不要使用它。
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 Dimensions_day
[{'timeDimension': {'dayOfWeek': 'SATURDAY'}, 'metricOption': 'BREAKDOWN_DAY_OF_WEEK', 'value': '96'}]
dimensions_hour 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.