2017-07-21 12 views
0

だから私は、辞書を持っていると言う:pprintを使用してdictを注文する際に大文字小文字を無視しますか?

myDict = {"145":1, "Kittens":2, "apples":1, "trees":2} 

pprint(myDict, ...)を使用して、私が手:

{'145': 1, 
'Kittens': 2, 
'apples': 1, 
'trees': 2} 

代わりに、私は、資本Kの見かけの順序の優先順位を無視して取得したいのですが:

{'145': 1, 
'apples': 1, 
'Kittens': 2, 
'trees': 2} 

PrettyPrinterモジュールを使用する必要がありますか?隠されたpprint引数はありますか?それとも全く別の解決策がありますか?私のdictキーはこれ以上複雑ではありません。ありがとう。輸入なし

+3

あなただけPython-の一部のバージョンで(辞書を注文することができません3.6)。あなたは 'OrderedDict'を使うべきです。 –

+1

@WillemVanOnsem確かに。しかし、「pprint.pprint」は、[docs](https://docs.python.org/2/library/pprint.html) –

+2

に記載されているように、dictを印刷するときにキーを注文します。カスタムソートの規定はありません。 –

答えて

2

、簡易版:

def printdict(myDict): 
    print('{') 
    for a,b in sorted(myDict.items(),key = lambda tuple : tuple[0].lower()): 
     print("'"+str(a)+"'"+" : "+str(b)) 
    print('}') 

PM 2Ringに応じて改良版(これは何のために動作します):

def printdict(myDict): 
    print('{') 
    for a,b in sorted(myDict.items(),key = lambda t : t[0].lower()): 
     print(' {!r}: {!r},'.format(a, b)) 
    print('}') 
+0

これは私の実際の入力にはうまく機能しました。私はあまりにも多くの1行のラムダステートメントを使用していないので、私はここで何が起こっているのか試してみるつもりです。また、これを新しい.txtファイルに書き込む方法を理解しなければなりません!ご協力ありがとうございました。 –

+1

print()関数のドキュメントを参照してください。これは、 "、file = open(" file.txt "、" a ")"引数をサポートしています。したがって、print()を使ってstdoutではなくファイルに出力することができます。 – Ruan

+1

変数名に 'tuple'を使うのは良い考えではありません。なぜなら、組み込みの' tuple'型をシャドウするからです。これはラムダの地元の名前なのでここで傷つくことはありませんが、IMHOはまだ少し混乱しています。 FWIW、私はその状況で 'tup'または単に' t'を使うでしょう。 –

関連する問題