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

Pythonで辞書を使用して計算を実行する方法は?


問題

データのディクショナリに対してさまざまな計算(最小値、最大値、並べ替えなど)を実行したい。

解決策。

テニス選手とそのグランドスラムタイトルを含む辞書を作成します。

PlayerTitles = {
   'Federer': 20,
   'Nadal': 20,
   'Djokovic': 17,
   'Murray': 3,
   'Theim' : 1,
   'Zverev': 0
}

1.各プレイヤーが獲得したプレイヤー名とグランドスラムタイトルの辞書があります。それでは、タイトル数が最も少ないプレーヤーを探してみましょう

#type(PlayerTitles)
print(f"Output \n*** The minimum value in the dictionary is {min(PlayerTitles)} ")

出力

*** The minimum value in the dictionary is Djokovic

2.ディクショナリ値を含む計算を実際に実行しようとしているため、これはおそらく私たちが望んでいることではありません。それでは、辞書のvalues()メソッドを使用してこれを修正してみましょう。

print(f"Output \n*** The minimum value in the dictionary is {min(PlayerTitles.values())} ")

出力

*** The minimum value in the dictionary is 0

3.残念ながら、これは多くの場合、あなたが望むものとは正確には一致しません。たとえば、対応するキーに関する情報、つまりタイトル数が最も少ないプレーヤー名を知りたい場合があります。

4. min()およびmax()にキー関数を指定すると、最小値または最大値に対応するキーを取得できます。

print(f"Output \n***{min(PlayerTitles, key=lambda k: PlayerTitles[k])} ")

出力

***Zverev

5.ただし、最小値を取得するには、追加のルックアップを実行する必要があります。

min_titles = PlayerTitles[min(PlayerTitles, key=lambda k: PlayerTitles[k])]
print(f"Output \n***{min_titles} ")

出力

***0

6. zip()を含むソリューションは、辞書を(値、キー)ペアのシーケンスに「反転」することで問題を解決します。このようなタプルで比較を実行する場合、最初に値要素が比較され、次にキーが比較されます。

これにより、必要な動作が正確に得られ、1つのステートメントを使用して辞書の内容に対して簡単に削減と並べ替えを実行できます。

min_titles = min(zip(PlayerTitles.values(), PlayerTitles.keys()))
max_titles = max(zip(PlayerTitles.values(), PlayerTitles.keys()))

print(f"Output \n***{min_titles , max_titles} ")

出力

***((0, 'Zverev'), (20, 'Nadal'))

7.同様に、データをランク付けするには、zip()とsorted()を使用します

titles_sorted = sorted(zip(PlayerTitles.values(), PlayerTitles.keys()))
print(f"Output \n***{titles_sorted} ")

出力

***[(0, 'Zverev'), (1, 'Theim'), (3, 'Murray'), (17, 'Djokovic'), (20, 'Federer'), (20, 'Nadal')]

8.これらの計算を行うときは、zip()が1回だけ消費できるイテレータを作成することに注意してください。

titles_and_players = zip(PlayerTitles.values(), PlayerTitles.keys())
print(f"Output \n***{min(titles_and_players)} ")

出力

***(0, 'Zverev')

9.もう一度呼び出そうとすると、空のシーケンスとして例外が発生します。

10.(値、キー)ペアを含む計算では、複数のエントリがたまたま同じ値を持つ場合に、キーを使用して結果を決定することに注意してください。

たとえば、min()やmax()などの計算では、値が重複している場合、最小または最大のキーを持つエントリが返されます。これが、最大のタイトルを持つプレーヤーを選択するときに、最終的にナダルという1つの値のみになる理由です(ステップ7の出力を参照)。


  1. PythonPandas-マイクロ秒の頻度でDateTimeIndexでフロア操作を実行する方法

    マイクロ秒の頻度でDateTimeIndexに対してフロア操作を実行するには、 DateTimeIndex.floor()を使用します。 方法。マイクロ秒の周波数には、 freqを使用します 値が「us」のパラメータ 。 まず、必要なライブラリをインポートします- import pandas as pd 期間7、頻度をS、つまり秒とするDatetimeIndex。タイムゾーンはオーストラリア/アデレード- datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, tz='Aus

  2. Bokeh(Python)で画像を操作する方法は?

    Bokehで画像を操作するには、 image_url()を使用します メソッドと画像のリストを渡します。 ステップ :func:show のときにファイルに保存された出力を生成するように、デフォルトの出力状態を構成します と呼ばれます。 プロット用の新しい図を作成します。 指定されたURLから読み込まれた画像をレンダリングします。 Bokehオブジェクトまたはアプリケーションをすぐに表示します。 例 from bokeh.plotting import figure, show, output_file output_file('image.html') p = fi