Eu tenho o seguinte dicionário em python:
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
Eu preciso de uma maneira de descobrir se existe um valor como "um" ou "dois" neste dicionário.
Por exemplo, se eu quisesse saber se o índice "1" existia, seria necessário digitar:
"1" in d
E então o python me diria se isso é verdadeiro ou falso, no entanto, preciso fazer exatamente a mesma coisa, exceto para descobrir se existe um valor.
python
dictionary
find
JimmyK
fonte
fonte
d
, os tempos são efetivamente sem sentido. Em Python 3,dict.values()
é uma vista de dicionário, por padrão, edict.itervalues()
edict.viewvalues()
sumiram. Você pode testar novamente isso (com um dicionário maior) e usálist(d.values())
-lo para obter o comportamento do Python 2 eiter(d.values())
para obter odict.itervalues()
comportamento, mas como as duas versões exigem uma pesquisa e chamada globais, elas serão absolutamente mais lentas. Ambos fazem um trabalho extra que não é necessário.Você pode usar
para testar se
"one"
está entre os valores do seu dicionário.fonte
Dicionário Python tem get (key) funcion
Por exemplo,
Se sua chave não existir, retornará
none
valor.Conteúdo relevante para versões menores que 3.0 e maiores que 5.0. .
fonte
key:value
e não key.Use as visualizações do dicionário:
fonte
Existem tipos diferentes para verificar os valores
E se a lista de valores
E se a lista de valores com valores de sequência
fonte
value in [... list comprehension over sequence ...]
, useany(value in sequence ...)
, para evitar a criação de um objeto de lista que você não usa para mais nada e para causar um curto-circuito quando o valor for encontrado.No Python 3, você pode usar a
values()
função do dicionário. Retorna um objeto de exibição dos valores. Por sua vez, isso pode ser passado para aiter
função que retorna um objeto iterador. O iterador pode ser verificado usandoin
, assim,Ou você pode usar o objeto de exibição diretamente, pois é semelhante a uma lista
fonte
iter()
em uma exibição de dicionário;in
já usará o objeto como iterável (o tipo não implementa um__contains__
método dedicado ). A única diferença entre'one' in iter(d.values())
e'one in d.values()
é que você fez o Python fazer um trabalho extra (pagando o custo de uma pesquisa globaliter
).