Si supponga di avere un dett.ordinamento dettato dal valore python
data = {1:'b', 2:'a'}
E voglio ordinare i dati da 'b' e 'un' in modo da ottenere il risultato
'a','b'
Come posso fare?
Qualche idea?
Si supponga di avere un dett.ordinamento dettato dal valore python
data = {1:'b', 2:'a'}
E voglio ordinare i dati da 'b' e 'un' in modo da ottenere il risultato
'a','b'
Come posso fare?
Qualche idea?
per ottenere i valori utilizzano
sorted(data.values())
per ottenere le chiavi di corrispondenza, utilizzare una funzione
sorted(data, key=data.get)
key
Per ottenere una lista di tuple ordinate per valore
sorted(data.items(), key=lambda x:x[1])
correlati : vedi la discussione qui: Dictionaries are ordered in Python 3.6+
ordinare i valori:
sorted(data.values())
rendimenti
['a','b']
Penso anche che è importante notare che Python dict
tipo di oggetto è una tabella di hash (more on this here), e quindi non è in grado di essere ordinato senza convertire le sue chiavi/valori in liste. Ciò che ciò consente è il recupero degli articoli in dict
in tempo costante O(1)
, indipendentemente dalla dimensione/numero di elementi in un dizionario.
Detto questo, una volta che si ordinano le sue chiavi - sorted(data.keys())
, o valori - sorted(data.values())
, è quindi possibile utilizzare tale elenco per accedere alle chiavi/valori nei modelli di design come questi:
for sortedKey in sorted(dictionary):
print dictionary[sortedKeY] # gives the values sorted by key
for sortedValue in sorted(dictionary.values()):
print sortedValue # gives the values sorted by value
Spero che questo aiuti.
Se effettivamente desidera ordinare il dizionario invece di ottenere utilizzare un elenco ordinato collections.OrderedDict
>>> from collections import OrderedDict
>>> from operator import itemgetter
>>> data = {1: 'b', 2: 'a'}
>>> d = OrderedDict(sorted(data.items(), key=itemgetter(1)))
>>> d
OrderedDict([(2, 'a'), (1, 'b')])
>>> d.values()
['a', 'b']
La cosa triste è che è in Python 2.6.5 ... che non supporta OrderedDict – kingRauk
@kingRauk quindi non tagga la tua domanda Python 2.7 .... Anche un sacco di cose hai menzionato nei commenti avrebbe dovuto essere nella tua domanda per iniziare con – jamylak
Sì, mi dispiace per quello ... – kingRauk
Dal tuo commento gnibbler risposta, direi che si desidera un elenco di coppie di valore-chiave ordinato per valore:
sorted(data.items(), key=lambda x:x[1])
Grazie per tutte le risposte. Siete tutti miei eroi ;-)
Forse, alla fine, qualcosa di simile:
d = sorted(data, key = d.get)
for id in d:
text = data[id]
Nel tuo commento in risposta a John, suggerisci che si desidera le chiavi ei valori del dizionario, non solo i valori.
PEP 256 suggerisce questo per ordinare un dizionario per valori.
import operator
sorted(d.iteritems(), key=operator.itemgetter(1))
se volete l'ordine decrescente, fare questo elenco
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
nessun metodo lambda
# sort dictionary by value
d = {'a1': 'fsdfds', 'g5': 'aa3432ff', 'ca':'zz23432'}
def getkeybyvalue(d,i):
for k, v in d.items():
if v == i:
return (k)
sortvaluelist = sorted(d.values())
sortresult ={}
for i1 in sortvaluelist:
key = getkeybyvalue(d,i1)
sortresult[key] = i1
print ('=====sort by value=====')
print (sortresult)
print ('=======================')
Si potrebbe precedentemente creati ordinato dai valori e ricostruire il dizionario:
myDictionary={"two":"2", "one":"1", "five":"5", "1four":"4"}
newDictionary={}
sortedList=sorted(myDictionary.values())
for sortedKey in sortedList:
for key, value in myDictionary.items():
if value==sortedKey:
newDictionary[key]=value
Output: newDict ionary = {'one': '1', 'two': '2', '1four': '4', 'five': '5'}
possibile duplicato di [ordinamento dei valori del dizionario Python] (http: //stackoverflow.com/questions/6046049/python-dictionary-values-sorting) –
possibile duplicato di [Come ordinare i dizionari per le chiavi in Python] (http://stackoverflow.com/questions/4642501/how-to-sort -dictionaries-by-keys-in-python) – njzk2
possibile duplicato di http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by-value Dai un'occhiata a questo: http: // stackoverflow. it/questions/613183/python-sort-a-dictionary-by-value/4215710 # 4215710 – jimifiki