コメントで示唆したよう
利用OrderedDict()が、正しくは:
from collections import OrderedDict
d = OrderedDict([('name', 'satendra'), ('occupation', 'engineer'), ('age', 27)])
あなたは、あなたの出力になりたいと、それを定義します。その後、通常の辞書と同じように使用します。
そして、あなたが戻ってタプルのリストをしたいとき、あなたがやる:あなたが期待するとあなたはOrderedDict()を使用することはできませんどのようなキーを知っているときは、このソリューションを使用することができます
t = d.items()
:
def sortdict (d, keys=["name", "occupation"]):
mx = len(keys)
def customsortkey (key):
try: return keys.index(key)
except: return mx
kys = sorted(d, key=customsortkey)
return [(key, d[key]) for key in kys]
この関数は、入力辞書 "d"のすべてを "keys"リストで設定された順序に従ってソートします。リストの "キー"にキーが存在しない辞書内の項目は、出力の最後に任意の順序で置かれます。辞書に存在しないキーを指定することができます。 出力は、必要に応じてタプル(キー、値)のリストになります。
これは可能な解決策の1つであり、理想から遠いです。私。効率とオーバーヘッドについて議論を開始することができます。しかし実際には、実際には正常に動作し、予期しないキーをうまく処理します。 この関数のより効率的なバージョンは、辞書を使用してリストの代わりにキーの順序を示すことです。対象のキーとその値のソート・インデックスを持つ辞書。 このように:
def sortdict (d, keys={"name": 0, "occupation": 1}):
mx = len(keys)
kys = sorted(d, key=lambda k: keys.get(k, mx))
return [(key, d[key]) for key in kys]
ご注文は、キーと値のペアを維持することを意味しますか? –
'name'キーが私のdictの最初のフィールドであるので、タプルに変換するときにも最初に来るはずです – Satendra
' OrderedDict'を使用してください。*本質的にはタプルのリストです。 – DeepSpace