как говорится в заголовке, у меня проблема с фильтрацией массива, который я получаю из API CoinGecko. Массив выглядит так:
[
{
"id": "01coin",
"symbol": "zoc",
"name": "01coin"
},
{
"id": "0-5x-long-algorand-token",
"symbol": "algohalf",
"name": "0.5X Long Algorand Token"
},
{
"id": "0-5x-long-altcoin-index-token",
"symbol": "althalf",
"name": "0.5X Long Altcoin Index Token"
}
]
После фильтра я бы хотел, чтобы он показывал только «id» следующим образом:
[
"01coin",
"0-5x-long-algorand-token",
"0-5x-long-altcoin-index-token"
]
Вот как я пытался его отфильтровать:
coinList = 'https://api.coingecko.com/api/v3/coins/list'
listCall = requests.get(coinList)
jsonCall = json.loads(listCall.content)
coinIds = [x for x in jsonCall if x == 'id']
В понимании списка не должно быть if
, потому что вам нужен результат для каждого элемента списка.
Ваше понимание списка вроде как есть, но вы должны индексировать каждый словарь, а не использовать предложение if
. Это должно выглядеть так:
[item["id"] for item in jsonCall]
Это выводит:
['01coin', '0-5x-long-algorand-token', '0-5x-long-altcoin-index-token']
Спасибо, это сработало отлично!
Вы делаете это то же так, как если бы вы получили эти данные любым другим способом. Это только что список диктовок. Далее, способ ответить "как мне получить результат выполнения чего-либо с каждым элементом списка?" есть: выяснить код, который будет делать это с одним элементом списка, а потом помещают это в понимание списка. Итак, реальный вопрос: учитывая диктат, где одним из ключей является
'id'
, как вы получаете значение'id'
? И ответ тривиален: просто посмотрите, например,x['id']
.