Dicionário Python: como você pode usá-lo para escrever um código melhor

Dicionário Python: como você pode usá-lo para escrever um código melhor

Um dicionário python é uma estrutura de dados semelhante a uma matriz associativa encontrada em outras linguagens de programação. Uma matriz ou lista indexa elementos por posição. Um dicionário, por outro lado, indexa elementos por chaves que podem ser strings. Pense em um dicionário como conjuntos não ordenados de valor chave pares.





Neste artigo, apresentamos a você como trabalhar com o dicionário Python.





Criação de um dicionário

Existem várias maneiras de criar um dicionário Python. O mais simples usa a inicialização de chaves, com uma sintaxe que lembra JSON.





users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}

Você também pode usar números como teclas. No entanto, tome cuidado ao usar números de ponto flutuante como chaves, pois o computador os armazena como aproximações.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{1980: '17%', 1981: '15%', 1982: '10%'}
17%

Especificando pares de valores-chave

Você também pode criar e inicializar um dicionário usando pares de valores de nomes como argumentos de palavras-chave para o dict () construtor.



tv online grátis sem inscrição
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Matriz de tuplas de valores-chave

Outra maneira de criar um dicionário é usar uma matriz de tuplas de valores-chave. Aqui está o mesmo exemplo acima.

pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]
population = dict(pairs)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Compreensão de Dito

A compreensão de dict fornece uma sintaxe legal para inicializar um ditado se você puder calcular os valores com base nas chaves. O seguinte inicializa um dicionário de números e valores quadrados para um intervalo de números.





print({x: x**2 for x in xrange(10, 20)})
# prints
{10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}

Como funciona? A última parte ( para x em xrange (10, 20) ) retorna um intervalo de números no intervalo especificado. A parte de compreensão do dicionário ( {x: x ** 2 ..} ) faz um loop neste intervalo e inicializa o dicionário.

Trabalho com um dicionário Python

O que você pode fazer com os dicionários depois de criá-los? Bem, você pode acessar elementos, atualizar valores, excluir elementos, etc.





Acessando os Elementos do Dicionário Python

Acesse um elemento de um dicionário usando a chave entre colchetes, assim como você faria uma matriz ou uma lista .

print(population['Delaware'])
# prints
897934

Se a chave for um número, você não precisa das aspas. A expressão, então, parece uma indexação de lista ou array.

print(rain_percent[1980])
# prints
17%

O tipo de chave ao acessá-la deve corresponder ao que está armazenado no dicionário Python. O seguinte causa um erro, pois as chaves armazenadas são números enquanto a chave de acesso é uma string.

x = '1980'
print(rain_percent[x])
# results in
1 x = '1980'
----> 2 print(rain_percent[x])
KeyError: '1980'

Acessando uma chave inexistente é um erro.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent[1983])
# prints
1 rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
----> 2 print(rain_percent[1983])
KeyError: 1983

Para acessar uma chave e fornecer um valor padrão se o mapeamento não existir, use o pegue() método com valor padrão como o segundo argumento.

como adicionar uma borda ao texto no photoshop
print(rain_percent.get(1985, '0%'))
# prints
0%

Verificando a existência

E se você quiser verificar a presença de uma chave sem realmente tentar acessá-la (e possivelmente encontrar um KeyError como acima)? Você pode usar o no palavra-chave na forma chave em dct que retorna um booleano.

print(1980 in rain_percent)
print('1980' in rain_percent)
# prints
True
False

Inverta a condição (ou seja, certifique-se de que a chave não esteja presente no dicionário Python) usando o formulário a chave não está em dct . Isso é equivalente à negação python padrão não chave em dct .

print(1980 not in rain_percent)
print(1985 not in rain_percent)
# prints
False
True

Modificando Elementos

Altere o valor atribuindo à chave necessária.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users['age'] = 29
print(users)
# prints
{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Use a mesma sintaxe para adicionar um novo mapeamento ao dicionário Python.

users['dob'] = '15-sep-1971'
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Atualize vários elementos de um dicionário de uma só vez usando o atualizar() método.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.update({'age': 29, 'dob': '15-sep-1971'})
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Defina um valor padrão para uma chave usando conjunto padrão() . Este método define o valor da chave se o mapeamento não existir. Ele retorna o valor atual.

# does not change current value
print(users.setdefault('firstname', 'Jane'))
# prints
John
# sets value
print(users.setdefault('city', 'NY'))
# prints
NY
# Final value
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}

Excluindo elementos

Exclua mapeamentos no dicionário usando o do operador. Este operador não retorna nada.

Você encontrará um KeyError se a chave não existir no dicionário.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
del users['age']
print(users)
# prints
{'lastname': 'Smith', 'firstname': 'John'}

Use o pop () em vez disso, quando quiser o valor excluído de volta.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
print(users.pop('age'))
print(users)
# prints
27
{'lastname': 'Smith', 'firstname': 'John'}

E se você quiser excluir uma chave, se ela existir, sem causar um erro, se não existir? Você pode usar pop () e especificar Nenhum para o segundo argumento da seguinte forma:

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.pop('foo', None)
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}

E aqui está uma linha para deletar um monte de chaves de um dicionário sem causar um erro em chaves inexistentes.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}
map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])
print(users)

Quer excluir todas as chaves de um dicionário? Use o Claro() método.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.clear()
print(users)
# prints
{}

Loop com dicionários Python

Python fornece muitos métodos para repetir as entradas de um dicionário. Escolha um que atenda às suas necessidades.

Looping sobre as chaves

  • O método mais simples para processar chaves (e possivelmente valores) em sequência usa um loop da forma: users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Usando o método iterkeys () funciona exatamente da mesma forma que acima. Escolha qual formulário deseja usar. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Um terceiro método para recuperar e processar chaves em um loop envolve o uso da função interna iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in iter(users):
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Quando você precisar do índice da chave que está sendo processada, use o enumerar () função embutida conforme mostrado. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for index, key in enumerate(users):
    print(index, key, '=>', users[k])
    # prints
    0 lastname => John
    1 age => John
    2 firstname => John

Loop sobre pares de valores-chave

  • Quando você quiser recuperar cada par de valores-chave com uma única chamada, use iteritems () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k, v in users.iteritems():
    print(k, '=>', v)
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iterando sobre os valores

  • O método itervalues ​​() pode ser usado para iterar todos os valores do dicionário. Embora este método seja semelhante a um loop usando valores () , é mais eficiente porque não extrai todos os valores de uma vez. users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for value in users.itervalues():
    print(value)
    # prints
    Smith
    27
    John

Extraindo matrizes

Os métodos a seguir descrevem a extração de várias informações do dicionário Python em um formato de matriz. A matriz resultante pode ser repetida usando construções normais de Python. No entanto, lembre-se de que a matriz retornada pode ser grande, dependendo do tamanho do dicionário. Então pode ser mais caro (em termos de memória) para processar essas matrizes do que usar os métodos iteradores acima.

Um caso em que é aceitável trabalhar com essas matrizes é quando você precisa excluir itens do dicionário ao encontrar elementos indesejáveis. Trabalhar com um iterador enquanto modifica o dicionário pode causar um RuntimeError.

  • O método Itens() retorna uma matriz de tuplas de valor-chave. Você pode iterar sobre esses pares de valores-chave, conforme mostrado: users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k, v in users.items():
    print(k, '=>', v)
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Recupere todas as chaves do dicionário usando o método chaves() . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    print(users.keys())
    # prints
    ['lastname', 'age', 'firstname']
    Use a matriz retornada para fazer um loop sobre as chaves. for k in users.keys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • De maneira semelhante, use o método valores () para recuperar todos os valores do dicionário. for value in users.values():
    print(value)
    # prints
    Smith
    27
    John

Como você usa dicionários Python?

Tentamos cobrir os casos de uso mais comuns para dicionários Python neste artigo. Certifique-se de verificar todos os nossos outros artigos Python para ainda mais dicas de Python. Se você tiver outros casos de uso que acha que devem ser incluídos, informe-nos nos comentários abaixo!

como baixar um site para offline

Créditos de imagem: viper345 / Shutterstock

Compartilhado Compartilhado Tweet O email Como acessar o nível de bolha integrado do Google no Android

Se você já precisou ter certeza de que algo está nivelado em um aperto, agora você pode obter um nível de bolha em seu telefone em segundos.

Leia a seguir
Tópicos relacionados
  • Programação
  • Pitão
Sobre o autor Jay Sridhar(17 artigos publicados) Mais de Jay Sridhar

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever