Como obter um valor específico de um dicionário

vp0r

Eu sou bastante novo em python e é meu primeiro post aqui no Stack, então uma apologia se meu post não estiver bem formatado. Estou tentando preencher um dicionário usando dados extraídos de um site da web, eu obtenho os dados, então os atribuo ao dicionário, quando imprimo o dicionário os dados aparecem. Não consegui acessar apenas uma linha do dicionário, o que estou perdendo?

Aqui está o código:

import requests
from bs4 import BeautifulSoup
print('{:<10} {:<30}'.format('Tiker', 'Price'))
print()
url = 'https://www.coingecko.com/en'

r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
coin_table = soup.find('div', class_ = 'coingecko-table')

sym = [] 
price = [] 

for coin in coin_table.find_all('tbody'):
rows = coin.find_all('tr')
    for row in rows:
    token_sym = row.find('span', class_ = 'tw-hidden d-lg-inline font-normal text-3xs ml-2').text.strip()
    token_price = row.find('span', {'data-target' : 'price.price'}).text.strip()

    sym.append(token_sym)
    price.append(token_price)
    

    print('{:<10} {:<30}'.format((token_sym),(token_price)))

    data = dict(zip(sym,price))

print(data)

Aqui está o resultado:

Tiker      Price

BTC        $44,124
ETH        $3,008.67
USDT       $1.00
BNB        $375.26
ADA        $1.70
XRP        $0.942681
DOGE       $0.255957
USDC       $1.00
DOT        $20.18
UNI        $27.07
BUSD       $1.00
SOL        $40.00
BCH        $598.93
LTC        $163.80
LINK       $24.36
WBTC       $44,081
ICP        $62.06
MATIC      $1.28
ETC        $58.58
XLM        $0.319697
VET        $0.104720
THETA      $6.64
LUNA       $16.00
FIL        $67.32
OKB        $22.29
TRX        $0.081499304270
DAI        $1.00
FTT        $48.11
CUSDC      $0.022222942221
AAVE       $381.38
XMR        $258.06
CETH       $60.28
CDAI       $0.021684507697
EOS        $4.60
CAKE       $18.80
AXS        $69.08
ATOM       $13.65
GRT        $0.793827
SHIB       $0.000007551040
KLAY       $1.43
CRO        $0.138263
NEO        $46.96
BTT        $0.004398147292
AMP        $0.060216111886
MKR        $3,200.18
BSV        $152.82
ALGO       $0.866358
LEO        $2.91
XTZ        $3.27
MIOTA      $0.985600
AVAX       $15.68
CEL        $6.21
EGLD       $125.47
COMP       $445.51
STETH      $2,995.42
KSM        $251.38
HT         $12.63
UST        $1.00
SUSHI      $10.80
DCR        $152.33
HBAR       $0.213998
QNT        $148.47
HOT        $0.010435101561
WAVES      $17.89
RUNE       $6.64
DASH       $172.98
CHZ        $0.330519
HBTC       $43,875
TFUEL      $0.323835
SNX        $10.08
XEM        $0.183840
ZEC        $132.08
XDC        $0.119131
HNT        $15.63
ENJ        $1.51
STX        $1.32
NEAR       $3.09
RVN        $0.139150
YFI        $36,081
TUSD       $1.00
FLOW       $22.20
ZIL        $0.096280701841
IOTX       $0.119378
SAFEMOON   $0.000002055113
TEL        $0.018552432865
CLOUT      $99.89
QTUM       $10.12
BAT        $0.696237
BCHA       $54.61
NEXO       $1.82
MANA       $0.779030
BTG        $57.86
PAX        $1.00
ONE        $0.089852635606
BNT        $3.89
XSUSHI     $12.47
DGB        $0.058679738018
KCS        $10.75
TITAN      $8.35
SC         $0.017170311254
{'BTC': '$44,124', 'ETH': '$3,008.67', 'USDT': '$1.00', 'BNB': '$375.26', 'ADA': '$1.70', 'XRP': '$0.942681', 'DOGE': '$0.255957', 'USDC': '$1.00', 'DOT': '$20.18', 'UNI': '$27.07', 'BUSD': '$1.00', 'SOL': '$40.00', 'BCH': '$598.93', 'LTC': '$163.80', 'LINK': '$24.36', 'WBTC': '$44,081', 'ICP': '$62.06', 'MATIC': '$1.28', 'ETC': '$58.58', 'XLM': '$0.319697', 'VET': '$0.104720', 'THETA': '$6.64', 'LUNA': '$16.00', 'FIL': '$67.32', 'OKB': '$22.29', 'TRX': '$0.081499304270', 'DAI': '$1.00', 'FTT': '$48.11', 'CUSDC': '$0.022222942221', 'AAVE': '$381.38', 'XMR': '$258.06', 'CETH': '$60.28', 'CDAI': '$0.021684507697', 'EOS': '$4.60', 'CAKE': '$18.80', 'AXS': '$69.08', 'ATOM': '$13.65', 'GRT': '$0.793827', 'SHIB': '$0.000007551040', 'KLAY': '$1.43', 'CRO': '$0.138263', 'NEO': '$46.96', 'BTT': '$0.004398147292', 'AMP': '$0.060216111886', 'MKR': '$3,200.18', 'BSV': '$152.82', 'ALGO': '$0.866358', 'LEO': '$2.91', 'XTZ': '$3.27', 'MIOTA': '$0.985600', 'AVAX': '$15.68', 'CEL': '$6.21', 'EGLD': '$125.47', 'COMP': '$445.51', 'STETH': '$2,995.42', 'KSM': '$251.38', 'HT': '$12.63', 'UST': '$1.00', 'SUSHI': '$10.80', 'DCR': '$152.33', 'HBAR': '$0.213998', 'QNT': '$148.47', 'HOT': '$0.010435101561', 'WAVES': '$17.89', 'RUNE': '$6.64', 'DASH': '$172.98', 'CHZ': '$0.330519', 'HBTC': '$43,875', 'TFUEL': '$0.323835', 'SNX': '$10.08', 'XEM': '$0.183840', 'ZEC': '$132.08', 'XDC': '$0.119131', 'HNT': '$15.63', 'ENJ': '$1.51', 'STX': '$1.32', 'NEAR': '$3.09', 'RVN': '$0.139150', 'YFI': '$36,081', 'TUSD': '$1.00', 'FLOW': '$22.20', 'ZIL': '$0.096280701841', 'IOTX': '$0.119378', 'SAFEMOON': '$0.000002055113', 'TEL': '$0.018552432865', 'CLOUT': '$99.89', 'QTUM': '$10.12', 'BAT': '$0.696237', 'BCHA': '$54.61', 'NEXO': '$1.82', 'MANA': '$0.779030', 'BTG': '$57.86', 'PAX': '$1.00', 'ONE': '$0.089852635606', 'BNT': '$3.89', 'XSUSHI': '$12.47', 'DGB': '$0.058679738018', 'KCS': '$10.75', 'TITAN': '$8.35', 'SC': '$0.017170311254'}

Resultado desejado:

'BTC': '$44,124'

Eu tentei:

print(data)[1]
data.get(0)

Além disso, se eu retirar o argumento "zip" quando o dicionário estiver definido, recebo o erro

data = dict (sym, price) TypeError: dict esperado no máximo 1 argumento, obteve 2

também tentei configurar o dicionário assim:

val = dict(((token_sym,token_price,row)for row in rows))

mas só retorna o último valor, não salva todos os valores no dicionário

espero que alguém possa me dizer onde estou falhando. Obrigado

mattdood

Os dicionários usam um sistema de "chave" em vez de depender de índices como os Listobjetos fazem. Consulte a chave para obter o valor desejado.

Além disso, se for iterar por cada uma das moedas, em vez de criar uma lista delas usando, .append()você pode considerar a criação de um dicionário, pois isso permitiria uma pesquisa mais rápida.

Em seu exemplo atual, você teria que revisar toda a lista de dados e verificar se o dicionário é o que deseja. Se você apenas fizer um dicionário, poderá fazer o seguinte:

coin_results = {}
for coin in coin_table.find_all('tbody'):
    rows = coin.find_all('tr')
        for row in rows:
            token_sym = row.find('span', class_ = 'tw-hidden d-lg-inline font-normal text-3xs ml-2').text.strip()
            token_price = row.find('span', {'data-target' : 'price.price'}).text.strip()
            
            # dictionary creation
            coin_dict = {token_sym: token_price}
            coin_results.update(coin_dict)

Isso resultaria em:

# Final dictionary
coin_results = {
    'BTC': 'some price data here',
    'other coin here': 'some other price data',
    ...
}

# Access this like: 
coin_results['BTC']
>>> 'some price data here'

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

como obter um valor específico no dicionário de lista

como obter um valor específico no dicionário python?

Como obter um valor específico no dicionário python?

Como obter a chave de um valor específico em um dicionário contendo uma lista

Como obter o valor de um campo específico do dicionário de pilha do cloudformation com python

Como alterar o valor específico de um dicionário com vários valores (tupla) sem obter TypeError

Python como obter um valor de um dicionário complexo?

Como filtrar um valor específico em um dicionário?

Como obter um valor específico de um objeto JSON

Como imprimir um valor-chave específico de um dicionário?

Como imprimir um valor-chave específico de um dicionário?

Como substituir um caractere específico em um valor de dicionário python

Como obter o índice de um objeto específico no Dicionário de forma rápida

Como obter um valor específico de resultado de resposta

Como excluir um elemento específico de um dicionário?

Como obter um valor específico de json

Como obter um valor específico de uma string?

Como obter índices de um tapete com valor específico?

Como obter um valor de array específico em php

Como obter um valor específico de muitos <p>

Como obter um valor específico de JSON

Como obter um valor específico no construtor de consultas Laravel

Clojure: como obter um valor específico de uma tupla

Pymongo: como obter o valor de um campo específico

PHP: como obter um valor específico de uma matriz

XQuery: como obter um valor específico de uma tag?

XQuery: como obter um valor específico de uma tag?

como obter um valor específico de uma string

Como obter um valor de texto específico ao clicar?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo