Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで辞書の要素をランダムな順序で出力する方法

Pythonの辞書をランダムな順序で表示する方法

Pythonの辞書(dict型)は、リストのようにインデックスを持たないデータ構造です。そのため、辞書そのものを直接シャッフルすることはできません。

しかし、辞書のキーのコレクションは反復可能(イテラブル)であるため、randomモジュールのshuffle()関数を使ってランダムに並べ替えることができます。シャッフルしたキーをもとにループ処理を行えば、それぞれのキーに関連付けられた値もランダムな順序で出力できます。

手順の流れ

  1. list(D1.keys()) で辞書のすべてのキーをリストとして取得する
  2. random.shuffle() でキーのリストをシャッフルする
  3. for文でシャッフル後のキーを順に取り出し、対応する値と一緒に出力する

サンプルコード

>>> D1 = {"pen": 25, "pencil": 10, "book": 100, "sharpner": 5, "eraser": 5}
>>> import random
>>> l = list(D1.keys())
>>> l
['pen', 'pencil', 'book', 'sharpner', 'eraser']
>>> random.shuffle(l)
>>> l
['pencil', 'eraser', 'sharpner', 'book', 'pen']
>>> for k in l:
    print(k, D1[k])

実行結果

pencil 10
eraser 5
sharpner 5
book 100
pen 25

補足:random.sample() を使う方法

shuffle()は元のリストを直接書き換える破壊的な操作のため、元の順序を保持したい場合はrandom.sample()を使うと便利です。sample()はシャッフル済みの新しいリストを返すだけで、元のリストには影響を与えません。

>>> import random
>>> D1 = {"pen": 25, "pencil": 10, "book": 100, "sharpner": 5, "eraser": 5}
>>> shuffled = random.sample(list(D1.keys()), len(D1))
>>> for k in shuffled:
    print(k, D1[k])

このように、辞書のキーを一度リスト化してからシャッフルすることで、辞書の中身をランダムな順序で表示できます。クイズの出題順をランダム化したい場合や、データを無作為に抽出・表示したい場合など、さまざまな場面で応用できる便利なテクニックです。

  1. Pythonで辞書(dict)をソートする方法|キー・値で並べ替える2つのテクニック

    Pythonの辞書(dict)は、キーと値のペアで構成されるデータ構造です。辞書をソートするには、主に以下の2つの基準があります。キーでソート - キーを昇順に並べ替えます。値の順序は考慮されません。値でソート - 値を昇順に並べ替えます。方法1:キーで辞書をソートするこの方法では、辞書をキーの昇順に並べ替えます。入力:{2:90, 1: 100, 8: 3, 5: 67, 3: 5}出力:{1:100, 2:90, 3:5, 5:67, 8:3}上記のように、辞書がキーの順序に従ってソートされていることがわかります。コード例dic={2:90, 1: 100, 8: 3, 5: 67, 3:

  2. Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例

    Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実