1

「tups」にタプルのリストがあり、次のコードを適用してフィルタリングしました。タプルのリストの形式は[(floata,stra1,stra2),(floatb,strb1,strb2),...etc]

keys=sorted({t[2] for t in tups}) 
for key in keys:     
    group=filter(lambda t: t[2]==key,tups)     
    print '{}:\n\tmax: {}\n\tmin: {}'.format(key,max(group),min(group))

最初は中かっこが間違いだと思い、角かっこに変更しました。構文エラーは発生しませんでしたが、コードは機能しませんでした。最後の手段として、ブラケットを元に戻しましたが、すべて問題ありませんでした。誰か構造を説明してください。これは辞書の理解ですか?これはドキュメントのどこで説明されていますか?

4

2 に答える 2

4

最初の行の中括弧を意味する場合、これは集合の内包的包摂です。これにより、のすべてのタプルから3番目のアイテムのセットが作成されtupsます。セットはリストに似ていますが、順序がないため、重複を含めることはできません。

文字列の角かっこを意味する場合、これは単なる新しいスタイルの文字列フォーマットです。呼び出すstr.format()と、これらの中括弧が渡された値に変更されます。

于 2012-09-26T14:33:55.127 に答える
0

Python 2.6 より前では、以下を使用していました。

print '%s:\n\tmax: %s\n\tmin: %s' % (key,max(group),min(group))

プレースホルダー ( ) を使用して文字列をフォーマットします%s

{}Python 2.6 以降、プレースホルダーの構文を.format代わりに使用できます。

print '{}:\n\tmax: {}\n\tmin: {}'.format(key,max(group),min(group))

または位置引数を使用する:

print '{0}:\n\tmax: {2}\n\tmin: {1}'.format(key,min(group),max(group))

(引数の順序を変更したことに注意してください。ただし、出力は同じです。以前{2}は 3 番目の引数を表していました...)

アドバイス: 多くの引数を取得する場合は、次のように名前を付ける方が簡単です。

print '{key}:\n\tmax: {groupmax}\n\tmin: {groupmin}'.format(key=key,groupmin=min(group),groupmax=max(group))

構文は.format構文よりも強力です%。例はドキュメントにあります。

于 2012-09-26T14:38:26.227 に答える