Código:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Isso imprime ['a', 'c', 'b']
. Não tenho certeza de como o método keys()
determina a ordem das palavras-chave em l . No entanto, gostaria de poder recuperar as palavras-chave na ordem "adequada". A ordem correta, claro, criaria a lista ['a', 'b', 'c']
.
python
dictionary
retângulo
fonte
fonte
Respostas:
Você pode usar OrderedDict (requer Python 2.7) ou superior.
Além disso, observe que
OrderedDict({'a': 1, 'b':2, 'c':3})
isso não funcionará, pois o quedict
você cria com{...}
já esqueceu a ordem dos elementos. Em vez disso, você deseja usarOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Conforme mencionado na documentação, para versões anteriores ao Python 2.7, você pode usar esta receita.
fonte
Python 3.7+
No Python 3.7.0, a natureza de preservação da ordem de inserção dos
dict
objetos foi declarada como uma parte oficial das especificações da linguagem Python. Portanto, você pode contar com isso.Python 3.6 (CPython)
A partir do Python 3.6, para a implementação CPython do Python, os dicionários mantêm a ordem de inserção por padrão. No entanto, isso é considerado um detalhe de implementação; você ainda deve usar
collections.OrderedDict
se quiser uma ordem de inserção garantida em outras implementações do Python.Python> = 2.7 e <3.6
Use a
collections.OrderedDict
classe quando precisar de umdict
que lembre a ordem dos itens inseridos.fonte
Use a função classificada , que classifica o iterável passado.
O
.keys()
método retorna as chaves em uma ordem arbitrária.fonte
Basta classificar a lista quando quiser usá-la.
fonte
De http://docs.python.org/tutorial/datastructures.html :
"O método keys () de um objeto de dicionário retorna uma lista de todas as chaves usadas no dicionário, em ordem arbitrária (se você quiser classificá-la, apenas aplique a função Sort () a ela)."
fonte
Embora a ordem não importe, pois o dicionário é um hashmap. Depende da ordem em que é inserido:
saída:
para string abbc, as chaves são dict_keys (['a', 'b', 'c'])
para string cbab, as chaves são dict_keys (['c', 'b', 'a'])
fonte