2017-07-12 8 views
1

をフォーマットする際に辞書を並べ替え。なぜソートされていないのかわかりません。それは以下のコードを、別の順序で返す。Pythonは、私はこのフォーマットの表現を持って表現

currentPL: -438.627395715 
portfolio: Balance: 10101 
Transactions: 10 
exitPrice: 1.14686 
exitTime: 2017-07-12 06:0 
entryTime: 2017-07-12 06: 
currentlyOpen: True 
entryPrice: 1.14686 
direction: Long 
currentPrice: 1.14188 
transactionPL: 627.994644 
currentPL100: -0.00434229 
units: 88077.79030439684 

portfolio: Balance: 10101 
Transactions: 10 
currentPrice: 1.14228 
exitTime: 2017-07-12 06:0 
entryTime: 2017-07-12 06: 
currentlyOpen: True 
entryPrice: 1.14686 
direction: Long 
transactionPL: 627.994644 
currentPL100: -0.00399351 
currentPL: -403.396279594 
exitPrice: 1.14686 
units: 88077.79030439684 

... 
+0

:ここitertools.starmapを使用して、非常に読みやすいバージョンが上限です。 '{...}'の代わりに '[...]'を使う – inspectorG4dget

答えて

2

あなたが最初の場所での注文の最初の目的に反しセット(順不同タイプ)に'\n'.joinを呼んでいる:

あなたはリスト(シーケンス)を使用することができます

"\n".join([...]) 

これらを削除してジェネレータ式を直接使用してください。あなたのフォーマット式で「リスト」が設定されているため

from itertools import starmap 

result = "\n".join(starmap("{}: {}".format, sorted(self.__dict__.items())) 
関連する問題