2016-02-23 2 views
1

Так у меня есть объект, который имеет GeoJSON:Python - Используя min(), чтобы найти минимальное значение в объекте JSON?

"features" : [{"properties": {"rank": 10}},{"properties": {"rank": 2}}] 

и так далее. Я хочу найти минимальный ранг и использовать метод min. Так что я пытался что-то вроде этого:

features = geojson["features"] 
min(features["properties"]["rank"]) 

, а затем:

features = geojosn["features"]["properties"]["rank"] 
min(features) 

и получил это на обоих:

TypeError: List indices must be integers of slices, not str

Что я делаю неправильно? Любая помощь будет принята с благодарностью, спасибо !!!

ответ

5

Я предполагаю, что у вас есть список функций со свойствами (поскольку @idjaw указал, что ваша структура данных неверна). Затем geojson['features'] - это список, и вы не индексируете список. Вы можете сделать это с помощью генератора:

min(feature["properties"]["rank"] for feature in geojson['features']) 

В качестве альтернативы, если вы хотите, чтобы вся функцию тогда вы можете использовать ключ:

min(geojson['features'], key=lambda feature: feature["properties"]["rank"]) 
+0

Но в основном, 'feature' выступает в качестве списка итератора здесь, чтобы проходной элементы функций? – ocean800

+0

Спасибо за ответ! :) – ocean800

Смежные вопросы