93

私が口述を持っていると仮定します。

data = {1:'b', 2:'a'}

そして、データを「b」と「a」でソートしたいので、結果を取得します

'a','b'

それ、どうやったら出来るの?
何か案は?

4

9 に答える 9

182

To get the values use

sorted(data.values())

To get the matching keys, use a key function

sorted(data, key=data.get)

To get a list of tuples ordered by value

sorted(data.items(), key=lambda x:x[1])

Related: see the discussion here: Dictionaries are ordered in Python 3.6+

于 2013-05-27T11:23:16.623 に答える
47

ソートされたリストを取得するだけでなく、実際に辞書をソートしたい場合は、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']
于 2013-05-27T11:53:33.567 に答える
9

Sort the values:

sorted(data.values())

returns

['a','b']
于 2013-05-27T11:23:17.957 に答える
9

すべての回答に感謝します。あなたはすべて私のヒーローです;-)

最終的に次のようなことをしました:

d = sorted(data, key = data.get)

for key in d:
    text = data[key]
于 2013-05-27T13:01:01.670 に答える