[解決済み】itertools.groupby()を使うにはどうしたらいいですか?)
質問
実際にPythonの
itertools.groupby()
関数を使用します。 私がやろうとしているのは、こういうことです。
-
リスト(この場合、オブジェクト化された
lxml
要素 - 何らかの基準でグループに分ける
- そして、後でこれらのグループのそれぞれを別々に反復処理します。
見直したのは ドキュメント しかし、単純な数字の羅列以上のものを適用しようとすると、なかなかうまくいかない。
では、どのように
itertools.groupby()
? また、他に使うべきテクニックはありますか? また、良い参考文献の紹介もお願いします。
どのように解決するのですか?
重要な注意事項 をしなければなりません。 データのソート を最初に設定します。
私が理解できなかった部分は、例の構造において
groups = []
uniquekeys = []
for k, g in groupby(data, keyfunc):
groups.append(list(g)) # Store group iterator as a list
uniquekeys.append(k)
k
は現在のグループ化キー、そして
g
はイテレータで、そのグループ化キーで定義されたグループに対して反復処理を行うために使用します。言い換えれば
groupby
イテレータ自体はイテレータを返します。
ここでは、より明確な変数名を使った例を紹介します。
from itertools import groupby
things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]
for key, group in groupby(things, lambda x: x[0]):
for thing in group:
print("A %s is a %s." % (thing[1], key))
print("")
これで出力されます。
熊は動物である。
アヒルは動物です。サボテンは植物である。
スピードボートは乗り物です。
スクールバスは乗り物です。
この例では
things
はタプルのリストで、各タプルの最初の項目は、2番目の項目が属するグループです。
は
groupby()
関数は2つの引数を取ります。(1)グループ化するデータ、(2)グループ化する関数。
ここで
lambda x: x[0]
伝える
groupby()
は、各タプルの最初の項目をグループ化のキーとして使用します。
上記の
for
ステートメントを使用します。
groupby
は、3つの (キー, グループイテレータ) ペア (一意のキーごとに1回) を返します。返されたイテレータを使って、そのグループ内の個々の項目を反復処理することができます。
同じデータで、リスト内包を使った少し変わった例を紹介します。
for key, group in groupby(things, lambda x: x[0]):
listOfThings = " and ".join([thing[1] for thing in group])
print(key + "s: " + listOfThings + ".")
これで出力されます。
動物:クマ、アヒル
植物:サボテン
乗り物:スピードボート、スクールバス
関連
-
Pythonコンテナのための組み込み汎用関数操作
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み] 値でリストをグループ化する
-
[解決済み] リストを均等な大きさの塊に分割するには?