I'm trying to extract some values from a list.
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
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; The final result is filtered list of the last loop iteration; Use dimensions_hour += ...
instead to accumulate instead of overwriting.
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. So happens that the last element in your list is hour
which resulted to an element for dimensions_hour
.
Plus list
is a reserved keyword. 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
[{'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'}]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.