Angenommen, ich habe ein Diktat.Sortieren nach Wert python
data = {1:'b', 2:'a'}
Und ich möchte, Daten sortieren, indem ‚b‘ und ‚a‘, damit ich das Ergebnis
'a','b'
Wie kann ich das tun?
Irgendwelche Ideen?
Angenommen, ich habe ein Diktat.Sortieren nach Wert python
data = {1:'b', 2:'a'}
Und ich möchte, Daten sortieren, indem ‚b‘ und ‚a‘, damit ich das Ergebnis
'a','b'
Wie kann ich das tun?
Irgendwelche Ideen?
Um die Werte zu erhalten verwenden
sorted(data.values())
die passenden Schlüssel zu erhalten, verwenden Sie eine key
Funktion
sorted(data, key=data.get)
Um eine Liste von Tupeln geordnet nach Wert
sorted(data.items(), key=lambda x:x[1])
Verwandte zu bekommen : Siehe die Diskussion hier: Dictionaries are ordered in Python 3.6+
Sortierendie Werte:
sorted(data.values())
kehrt
['a','b']
Ich denke auch, es ist wichtig zu beachten, dass Python dict
Objekttyp ist eine Hash-Tabelle (more on this here) und somit nicht in der Lage zu sein sortiert, ohne seine Schlüssel/Werte in Listen umzuwandeln. Was dies ermöglicht, ist dict
Artikel Abruf in konstanter Zeit O(1)
, unabhängig von der Größe/Anzahl der Elemente in einem Wörterbuch.
gesagt haben, dass, wenn Sie die Tasten sortieren - sorted(data.keys())
oder Werte - sorted(data.values())
Sie dann diese Liste Zugriffstasten/Werte in Designmuster wie diese verwenden:
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
Hoffnung, das hilft.
Wenn Sie tatsächlich das Wörterbuch sortieren wollen, anstatt nur eine sortierte Liste 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']
Von Ihrem Kommentar verwenden zu erhalten Antwort auf gnibbler, ich würde sagen, dass Sie eine Liste von Paaren von Schlüssel-Wert wollen sortiert nach Wert:
sorted(data.items(), key=lambda x:x[1])
Danke für alle Antworten. Sie sind alle meine Helden ;-)
am Ende so etwas wie dies getan habe:
d = sorted(data, key = d.get)
for id in d:
text = data[id]
In Ihrem Kommentar als Antwort auf John, schlagen Sie vor, dass Sie die Schlüssel und Werte des Wörterbuchs wollen, nicht nur die Werte.
PEP 256 schlägt dies zum Sortieren eines Wörterbuchs nach Werten vor.
import operator
sorted(d.iteritems(), key=operator.itemgetter(1))
Wenn Sie bestellen möchten absteigend, tun dies
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
keine Lambda-Methode
# 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 ('=======================')
Sie erstellt Liste von Werten sortiert konnte und wieder aufzubauen, das Wörterbuch:
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
Ausgabe: newDict ionary = {'eins': '1', 'zwei': '2', '1vier': '4', 'fünf': '5'}
mögliche Duplikate von [Python-Wörterbuch-Werte sortieren] (http: //stackoverflow.com/questions/6046049/python-dictionary-values-sorting) –
mögliche Duplikate von [Wie Wörterbücher nach Schlüsseln in Python sortiert werden] (http://stackoverflow.com/questions/4642501/how-to-sort -dictionaries-by-keys-in-python) – njzk2
möglich duplikat von http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by-value Werfen Sie einen Blick darauf: http: // stackoverflow. com/questions/613183/python-sort-a-dictionary-by-value/4215710 # 4215710 – jimifiki