过滤返回空数组

时间:2018-03-08 04:21:25

标签: python list

我试图从列表中提取一些值。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

因为循环中的“dimension *”列表会因每次迭代而被覆盖。 碰巧,列表中的最后一个元素是hour,这导致了dimensions_hour的元素。

Plus 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'}]
相关问题