Проблемы, возникающие в элементах словаря с ключом .values ​​"AttributeError: объект списка" не имеет атрибута "значения" " - PullRequest
0 голосов
/ 16 октября 2019
gribfile='gfs20191010.0p25' #file containing 384 hours of forecast data for variable Geopotential Height
grbs=pygrib.open(gribfile)
grb1=grbs.select(name='Geopotential Height')[0:24]
day1 = grb1.values

Когда я запускаю приведенный выше код, я получаю следующую ошибку:

AttributeError: 'list' object has no attribute 'values'

Клавиша .values ​​будет работать только при выборе первого элемента в списке, как показано ниже:

grb1 = grbs.select(name='Geopotential Height')[0]

Но не тогда, когда я делаю

grb1 = grbs.select(name='Geopotential Height')[0:24]

Я понимаю, что для ключа .values ​​форматом является dict.values, но я не могу понять, как извлечь данные из первых 24 элементов списка,Моя цель - взять первые 24 файла для выбранной переменной (высота геопотенциала) в виде массива, но для этого мне нужно иметь возможность извлекать информацию, содержащуюся в каждом файле, используя .values.

Я нашел следующую документацию для пигриба по адресу: https://jswhit.github.io/pygrib/docs/

1 Ответ

1 голос
/ 16 октября 2019

Согласно предоставленной вами ссылке на документацию:

select возвращает список gribmessage экземпляров.

Итак, когда вы делаете это:

grb1=grbs.select(name='Geopotential Height')[0:24]

Вы берете результат select (который является списком), а затем разбиваете этот список (который приводит к другому списку). Нарезанный список затем привязывается к grb1. Следовательно, grb1 - это список gribmessage экземпляров.

Как говорится в исключении Pyhton, список не имеет атрибута values. Тем не менее, один gribmessage, по-видимому, делает.

Не уверен, что это приблизит вас к ожидаемому результату, но вы можете использовать понимание списка, чтобы получить value s от gribmessage экземпляров в вашем списке:

values = [grb.values for grb in grb1]
...